package domain //User is a table structure definition type User struct { ID uint `gorm:"column:user_id;primary_key"` UserName string `gorm:"column:user_name"` FirstName string `gorm:"column:first_name"` LastName string `gorm:"column:last_name"` CompanyID uint `gorm:"column:company_id"` Company Company `gorm:"foreignkey:ID;association_foreignkey:CompanyID;auto_preload"` // Suppress linter because struct field tags can not be multiline //nolint:lll Roles []Role `gorm:"many2many:user_role_user;foreignkey:user_id;association_foreignkey:user_role_id;association_jointable_foreignkey:user_role_id;jointable_foreignkey:user_id;"` Reference string `gorm:"column:reference"` } // TableName returns the name of the Users table func (User) TableName() string { return "user" } // SortCol represents the sorting column type SortCol string // SortCol constants const ( SortColIDAsc SortCol = "id:asc" SortColIDDesc SortCol = "id:desc" SortColNameAsc SortCol = "name:asc" SortColNameDesc SortCol = "name:desc" ) // String for SortCol func (sc SortCol) String() string { return string(sc) } // UsersFilter represents the filtering object type UsersFilter map[UsersFilterType]interface{} // UsersFilterType represents the filtering types type UsersFilterType string // UsersFilterType constants (use same names as User struct) const ( UsersFilterTypeReference UsersFilterType = "reference" // database column name UsersFilterTypeCompanyID UsersFilterType = "company_id" ) // String for UsersFilterType func (ft UsersFilterType) String() string { return string(ft) }