relationship.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package model
  2. // RelationshipType relationship type
  3. type RelationshipType string
  4. const (
  5. HasOneRel RelationshipType = "has_one" // HasOneRel has one relationship
  6. HasManyRel RelationshipType = "has_many" // HasManyRel has many relationship
  7. BelongsToRel RelationshipType = "belongs_to" // BelongsToRel belongs to relationship
  8. Many2ManyRel RelationshipType = "many_to_many" // Many2ManyRel many to many relationship
  9. )
  10. type Relationships struct {
  11. HasOne map[string]*Relationship
  12. BelongsTo map[string]*Relationship
  13. HasMany map[string]*Relationship
  14. Many2Many map[string]*Relationship
  15. }
  16. type Relationship struct {
  17. Type RelationshipType
  18. ForeignKeys []*RelationField // self
  19. AssociationForeignKeys []*RelationField // association
  20. JoinTable *JoinTable
  21. }
  22. type RelationField struct {
  23. *Field
  24. PolymorphicField *Field
  25. PolymorphicValue string
  26. }
  27. type JoinTable struct {
  28. Table string
  29. ForeignKeys []*RelationField
  30. AssociationForeignKeys []*RelationField
  31. }