All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m32s
50 lines
1.9 KiB
Go
50 lines
1.9 KiB
Go
package user
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const (
|
|
FamilyStatusActive uint8 = 1
|
|
FamilyRoleOwner uint8 = 1
|
|
FamilyRoleMember uint8 = 2
|
|
FamilyMemberActive uint8 = 1
|
|
FamilyMemberLeft uint8 = 2
|
|
FamilyMemberRemoved uint8 = 3
|
|
DefaultFamilyMaxSize int64 = 3
|
|
)
|
|
|
|
type UserFamily struct {
|
|
Id int64 `gorm:"primaryKey"`
|
|
OwnerUserId int64 `gorm:"uniqueIndex:uniq_owner_user_id;not null;comment:Owner User ID"`
|
|
MaxMembers int64 `gorm:"not null;default:2;comment:Max members in family"`
|
|
Status uint8 `gorm:"type:tinyint(1);not null;default:1;comment:Status: 1=active, 0=disabled"`
|
|
CreatedAt time.Time `gorm:"<-:create;comment:Creation Time"`
|
|
UpdatedAt time.Time `gorm:"comment:Update Time"`
|
|
DeletedAt gorm.DeletedAt `gorm:"index;comment:Deletion Time"`
|
|
}
|
|
|
|
func (*UserFamily) TableName() string {
|
|
return "user_family"
|
|
}
|
|
|
|
type UserFamilyMember struct {
|
|
Id int64 `gorm:"primaryKey"`
|
|
FamilyId int64 `gorm:"index:idx_family_status,priority:1;not null;comment:Family ID"`
|
|
UserId int64 `gorm:"uniqueIndex:uniq_user_id;not null;comment:Member User ID"`
|
|
Role uint8 `gorm:"type:tinyint(1);not null;default:2;comment:Role: 1=owner, 2=member"`
|
|
Status uint8 `gorm:"index:idx_family_status,priority:2;type:tinyint(1);not null;default:1;comment:Status: 1=active, 2=left, 3=removed"`
|
|
JoinSource string `gorm:"type:varchar(32);not null;default:'';comment:Join source"`
|
|
JoinedAt time.Time `gorm:"not null;comment:Joined time"`
|
|
LeftAt *time.Time `gorm:"default:NULL;comment:Left time"`
|
|
CreatedAt time.Time `gorm:"<-:create;comment:Creation Time"`
|
|
UpdatedAt time.Time `gorm:"comment:Update Time"`
|
|
DeletedAt gorm.DeletedAt `gorm:"index;comment:Deletion Time"`
|
|
}
|
|
|
|
func (*UserFamilyMember) TableName() string {
|
|
return "user_family_member"
|
|
}
|