src.dualinventive.com/go/users-service/internal/domain/user.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)
}