54 lines
1.6 KiB
Go
54 lines
1.6 KiB
Go
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)
|
|
}
|