shanshanzhong 9b6efe2901
All checks were successful
Build docker and publish / build (20.15.1) (push) Successful in 7m32s
DefaultFamilyMaxSize
2026-03-12 01:41:39 -07:00

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"
}