mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 00:22:26 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			930 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			930 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package schema
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
)
 | 
						|
 | 
						|
const (
 | 
						|
	InvalidRelation = iota
 | 
						|
	HasOneRelation
 | 
						|
	BelongsToRelation
 | 
						|
	HasManyRelation
 | 
						|
	ManyToManyRelation
 | 
						|
)
 | 
						|
 | 
						|
type Relation struct {
 | 
						|
	Type       int
 | 
						|
	Field      *Field
 | 
						|
	JoinTable  *Table
 | 
						|
	BaseFields []*Field
 | 
						|
	JoinFields []*Field
 | 
						|
	OnUpdate   string
 | 
						|
	OnDelete   string
 | 
						|
	Condition  []string
 | 
						|
 | 
						|
	PolymorphicField *Field
 | 
						|
	PolymorphicValue string
 | 
						|
 | 
						|
	M2MTable      *Table
 | 
						|
	M2MBaseFields []*Field
 | 
						|
	M2MJoinFields []*Field
 | 
						|
}
 | 
						|
 | 
						|
// References returns true if the table to which the Relation belongs needs to declare a foreign key constraint to create the relation.
 | 
						|
// For other relations, the constraint is created in either the referencing table (1:N, 'has-many' relations) or a mapping table (N:N, 'm2m' relations).
 | 
						|
func (r *Relation) References() bool {
 | 
						|
	return r.Type == HasOneRelation || r.Type == BelongsToRelation
 | 
						|
}
 | 
						|
 | 
						|
func (r *Relation) String() string {
 | 
						|
	return fmt.Sprintf("relation=%s", r.Field.GoName)
 | 
						|
}
 |