feat: primary db property

pull/2499/head
WintBit 4 days ago
parent ca080fc758
commit 70dba983d2

File diff suppressed because one or more lines are too long

@ -21,6 +21,8 @@ type Membership struct {
UserID int `json:"user_id,omitempty"`
// GroupID holds the value of the "group_id" field.
GroupID int `json:"group_id,omitempty"`
// IsPrimary holds the value of the "is_primary" field.
IsPrimary bool `json:"is_primary,omitempty"`
// CreatedAt holds the value of the "created_at" field.
CreatedAt time.Time `json:"created_at,omitempty"`
// ExpiresAt holds the value of the "expires_at" field.
@ -73,6 +75,8 @@ func (*Membership) scanValues(columns []string) ([]any, error) {
values := make([]any, len(columns))
for i := range columns {
switch columns[i] {
case membership.FieldIsPrimary:
values[i] = new(sql.NullBool)
case membership.FieldUserID, membership.FieldGroupID:
values[i] = new(sql.NullInt64)
case membership.FieldCreatedAt, membership.FieldExpiresAt:
@ -104,6 +108,12 @@ func (m *Membership) assignValues(columns []string, values []any) error {
} else if value.Valid {
m.GroupID = int(value.Int64)
}
case membership.FieldIsPrimary:
if value, ok := values[i].(*sql.NullBool); !ok {
return fmt.Errorf("unexpected type %T for field is_primary", values[i])
} else if value.Valid {
m.IsPrimary = value.Bool
}
case membership.FieldCreatedAt:
if value, ok := values[i].(*sql.NullTime); !ok {
return fmt.Errorf("unexpected type %T for field created_at", values[i])
@ -168,6 +178,9 @@ func (m *Membership) String() string {
builder.WriteString("group_id=")
builder.WriteString(fmt.Sprintf("%v", m.GroupID))
builder.WriteString(", ")
builder.WriteString("is_primary=")
builder.WriteString(fmt.Sprintf("%v", m.IsPrimary))
builder.WriteString(", ")
builder.WriteString("created_at=")
builder.WriteString(m.CreatedAt.Format(time.ANSIC))
builder.WriteString(", ")

@ -16,6 +16,8 @@ const (
FieldUserID = "user_id"
// FieldGroupID holds the string denoting the group_id field in the database.
FieldGroupID = "group_id"
// FieldIsPrimary holds the string denoting the is_primary field in the database.
FieldIsPrimary = "is_primary"
// FieldCreatedAt holds the string denoting the created_at field in the database.
FieldCreatedAt = "created_at"
// FieldExpiresAt holds the string denoting the expires_at field in the database.
@ -50,6 +52,7 @@ const (
var Columns = []string{
FieldUserID,
FieldGroupID,
FieldIsPrimary,
FieldCreatedAt,
FieldExpiresAt,
}
@ -65,6 +68,8 @@ func ValidColumn(column string) bool {
}
var (
// DefaultIsPrimary holds the default value on creation for the "is_primary" field.
DefaultIsPrimary bool
// DefaultCreatedAt holds the default value on creation for the "created_at" field.
DefaultCreatedAt func() time.Time
)
@ -82,6 +87,11 @@ func ByGroupID(opts ...sql.OrderTermOption) OrderOption {
return sql.OrderByField(FieldGroupID, opts...).ToFunc()
}
// ByIsPrimary orders the results by the is_primary field.
func ByIsPrimary(opts ...sql.OrderTermOption) OrderOption {
return sql.OrderByField(FieldIsPrimary, opts...).ToFunc()
}
// ByCreatedAt orders the results by the created_at field.
func ByCreatedAt(opts ...sql.OrderTermOption) OrderOption {
return sql.OrderByField(FieldCreatedAt, opts...).ToFunc()

@ -20,6 +20,11 @@ func GroupID(v int) predicate.Membership {
return predicate.Membership(sql.FieldEQ(FieldGroupID, v))
}
// IsPrimary applies equality check predicate on the "is_primary" field. It's identical to IsPrimaryEQ.
func IsPrimary(v bool) predicate.Membership {
return predicate.Membership(sql.FieldEQ(FieldIsPrimary, v))
}
// CreatedAt applies equality check predicate on the "created_at" field. It's identical to CreatedAtEQ.
func CreatedAt(v time.Time) predicate.Membership {
return predicate.Membership(sql.FieldEQ(FieldCreatedAt, v))
@ -70,6 +75,26 @@ func GroupIDNotIn(vs ...int) predicate.Membership {
return predicate.Membership(sql.FieldNotIn(FieldGroupID, vs...))
}
// IsPrimaryEQ applies the EQ predicate on the "is_primary" field.
func IsPrimaryEQ(v bool) predicate.Membership {
return predicate.Membership(sql.FieldEQ(FieldIsPrimary, v))
}
// IsPrimaryNEQ applies the NEQ predicate on the "is_primary" field.
func IsPrimaryNEQ(v bool) predicate.Membership {
return predicate.Membership(sql.FieldNEQ(FieldIsPrimary, v))
}
// IsPrimaryIsNil applies the IsNil predicate on the "is_primary" field.
func IsPrimaryIsNil() predicate.Membership {
return predicate.Membership(sql.FieldIsNull(FieldIsPrimary))
}
// IsPrimaryNotNil applies the NotNil predicate on the "is_primary" field.
func IsPrimaryNotNil() predicate.Membership {
return predicate.Membership(sql.FieldNotNull(FieldIsPrimary))
}
// CreatedAtEQ applies the EQ predicate on the "created_at" field.
func CreatedAtEQ(v time.Time) predicate.Membership {
return predicate.Membership(sql.FieldEQ(FieldCreatedAt, v))

@ -36,6 +36,20 @@ func (mc *MembershipCreate) SetGroupID(i int) *MembershipCreate {
return mc
}
// SetIsPrimary sets the "is_primary" field.
func (mc *MembershipCreate) SetIsPrimary(b bool) *MembershipCreate {
mc.mutation.SetIsPrimary(b)
return mc
}
// SetNillableIsPrimary sets the "is_primary" field if the given value is not nil.
func (mc *MembershipCreate) SetNillableIsPrimary(b *bool) *MembershipCreate {
if b != nil {
mc.SetIsPrimary(*b)
}
return mc
}
// SetCreatedAt sets the "created_at" field.
func (mc *MembershipCreate) SetCreatedAt(t time.Time) *MembershipCreate {
mc.mutation.SetCreatedAt(t)
@ -109,6 +123,10 @@ func (mc *MembershipCreate) ExecX(ctx context.Context) {
// defaults sets the default values of the builder before save.
func (mc *MembershipCreate) defaults() {
if _, ok := mc.mutation.IsPrimary(); !ok {
v := membership.DefaultIsPrimary
mc.mutation.SetIsPrimary(v)
}
if _, ok := mc.mutation.CreatedAt(); !ok {
v := membership.DefaultCreatedAt()
mc.mutation.SetCreatedAt(v)
@ -156,6 +174,10 @@ func (mc *MembershipCreate) createSpec() (*Membership, *sqlgraph.CreateSpec) {
)
_spec.OnConflict = mc.conflict
if value, ok := mc.mutation.IsPrimary(); ok {
_spec.SetField(membership.FieldIsPrimary, field.TypeBool, value)
_node.IsPrimary = value
}
if value, ok := mc.mutation.CreatedAt(); ok {
_spec.SetField(membership.FieldCreatedAt, field.TypeTime, value)
_node.CreatedAt = value
@ -274,6 +296,24 @@ func (u *MembershipUpsert) UpdateGroupID() *MembershipUpsert {
return u
}
// SetIsPrimary sets the "is_primary" field.
func (u *MembershipUpsert) SetIsPrimary(v bool) *MembershipUpsert {
u.Set(membership.FieldIsPrimary, v)
return u
}
// UpdateIsPrimary sets the "is_primary" field to the value that was provided on create.
func (u *MembershipUpsert) UpdateIsPrimary() *MembershipUpsert {
u.SetExcluded(membership.FieldIsPrimary)
return u
}
// ClearIsPrimary clears the value of the "is_primary" field.
func (u *MembershipUpsert) ClearIsPrimary() *MembershipUpsert {
u.SetNull(membership.FieldIsPrimary)
return u
}
// SetCreatedAt sets the "created_at" field.
func (u *MembershipUpsert) SetCreatedAt(v time.Time) *MembershipUpsert {
u.Set(membership.FieldCreatedAt, v)
@ -372,6 +412,27 @@ func (u *MembershipUpsertOne) UpdateGroupID() *MembershipUpsertOne {
})
}
// SetIsPrimary sets the "is_primary" field.
func (u *MembershipUpsertOne) SetIsPrimary(v bool) *MembershipUpsertOne {
return u.Update(func(s *MembershipUpsert) {
s.SetIsPrimary(v)
})
}
// UpdateIsPrimary sets the "is_primary" field to the value that was provided on create.
func (u *MembershipUpsertOne) UpdateIsPrimary() *MembershipUpsertOne {
return u.Update(func(s *MembershipUpsert) {
s.UpdateIsPrimary()
})
}
// ClearIsPrimary clears the value of the "is_primary" field.
func (u *MembershipUpsertOne) ClearIsPrimary() *MembershipUpsertOne {
return u.Update(func(s *MembershipUpsert) {
s.ClearIsPrimary()
})
}
// SetCreatedAt sets the "created_at" field.
func (u *MembershipUpsertOne) SetCreatedAt(v time.Time) *MembershipUpsertOne {
return u.Update(func(s *MembershipUpsert) {
@ -616,6 +677,27 @@ func (u *MembershipUpsertBulk) UpdateGroupID() *MembershipUpsertBulk {
})
}
// SetIsPrimary sets the "is_primary" field.
func (u *MembershipUpsertBulk) SetIsPrimary(v bool) *MembershipUpsertBulk {
return u.Update(func(s *MembershipUpsert) {
s.SetIsPrimary(v)
})
}
// UpdateIsPrimary sets the "is_primary" field to the value that was provided on create.
func (u *MembershipUpsertBulk) UpdateIsPrimary() *MembershipUpsertBulk {
return u.Update(func(s *MembershipUpsert) {
s.UpdateIsPrimary()
})
}
// ClearIsPrimary clears the value of the "is_primary" field.
func (u *MembershipUpsertBulk) ClearIsPrimary() *MembershipUpsertBulk {
return u.Update(func(s *MembershipUpsert) {
s.ClearIsPrimary()
})
}
// SetCreatedAt sets the "created_at" field.
func (u *MembershipUpsertBulk) SetCreatedAt(v time.Time) *MembershipUpsertBulk {
return u.Update(func(s *MembershipUpsert) {

@ -58,6 +58,26 @@ func (mu *MembershipUpdate) SetNillableGroupID(i *int) *MembershipUpdate {
return mu
}
// SetIsPrimary sets the "is_primary" field.
func (mu *MembershipUpdate) SetIsPrimary(b bool) *MembershipUpdate {
mu.mutation.SetIsPrimary(b)
return mu
}
// SetNillableIsPrimary sets the "is_primary" field if the given value is not nil.
func (mu *MembershipUpdate) SetNillableIsPrimary(b *bool) *MembershipUpdate {
if b != nil {
mu.SetIsPrimary(*b)
}
return mu
}
// ClearIsPrimary clears the value of the "is_primary" field.
func (mu *MembershipUpdate) ClearIsPrimary() *MembershipUpdate {
mu.mutation.ClearIsPrimary()
return mu
}
// SetCreatedAt sets the "created_at" field.
func (mu *MembershipUpdate) SetCreatedAt(t time.Time) *MembershipUpdate {
mu.mutation.SetCreatedAt(t)
@ -169,6 +189,12 @@ func (mu *MembershipUpdate) sqlSave(ctx context.Context) (n int, err error) {
}
}
}
if value, ok := mu.mutation.IsPrimary(); ok {
_spec.SetField(membership.FieldIsPrimary, field.TypeBool, value)
}
if mu.mutation.IsPrimaryCleared() {
_spec.ClearField(membership.FieldIsPrimary, field.TypeBool)
}
if value, ok := mu.mutation.CreatedAt(); ok {
_spec.SetField(membership.FieldCreatedAt, field.TypeTime, value)
}
@ -284,6 +310,26 @@ func (muo *MembershipUpdateOne) SetNillableGroupID(i *int) *MembershipUpdateOne
return muo
}
// SetIsPrimary sets the "is_primary" field.
func (muo *MembershipUpdateOne) SetIsPrimary(b bool) *MembershipUpdateOne {
muo.mutation.SetIsPrimary(b)
return muo
}
// SetNillableIsPrimary sets the "is_primary" field if the given value is not nil.
func (muo *MembershipUpdateOne) SetNillableIsPrimary(b *bool) *MembershipUpdateOne {
if b != nil {
muo.SetIsPrimary(*b)
}
return muo
}
// ClearIsPrimary clears the value of the "is_primary" field.
func (muo *MembershipUpdateOne) ClearIsPrimary() *MembershipUpdateOne {
muo.mutation.ClearIsPrimary()
return muo
}
// SetCreatedAt sets the "created_at" field.
func (muo *MembershipUpdateOne) SetCreatedAt(t time.Time) *MembershipUpdateOne {
muo.mutation.SetCreatedAt(t)
@ -427,6 +473,12 @@ func (muo *MembershipUpdateOne) sqlSave(ctx context.Context) (_node *Membership,
}
}
}
if value, ok := muo.mutation.IsPrimary(); ok {
_spec.SetField(membership.FieldIsPrimary, field.TypeBool, value)
}
if muo.mutation.IsPrimaryCleared() {
_spec.ClearField(membership.FieldIsPrimary, field.TypeBool)
}
if value, ok := muo.mutation.CreatedAt(); ok {
_spec.SetField(membership.FieldCreatedAt, field.TypeTime, value)
}

@ -189,6 +189,7 @@ var (
}
// MembershipsColumns holds the columns for the "memberships" table.
MembershipsColumns = []*schema.Column{
{Name: "is_primary", Type: field.TypeBool, Nullable: true, Default: false},
{Name: "created_at", Type: field.TypeTime},
{Name: "expires_at", Type: field.TypeTime, Nullable: true},
{Name: "user_id", Type: field.TypeInt},
@ -198,17 +199,17 @@ var (
MembershipsTable = &schema.Table{
Name: "memberships",
Columns: MembershipsColumns,
PrimaryKey: []*schema.Column{MembershipsColumns[3], MembershipsColumns[2]},
PrimaryKey: []*schema.Column{MembershipsColumns[4], MembershipsColumns[3]},
ForeignKeys: []*schema.ForeignKey{
{
Symbol: "memberships_users_user",
Columns: []*schema.Column{MembershipsColumns[2]},
Columns: []*schema.Column{MembershipsColumns[3]},
RefColumns: []*schema.Column{UsersColumns[0]},
OnDelete: schema.NoAction,
},
{
Symbol: "memberships_groups_group",
Columns: []*schema.Column{MembershipsColumns[3]},
Columns: []*schema.Column{MembershipsColumns[4]},
RefColumns: []*schema.Column{GroupsColumns[0]},
OnDelete: schema.NoAction,
},

@ -5687,6 +5687,7 @@ type MembershipMutation struct {
config
op Op
typ string
is_primary *bool
created_at *time.Time
expires_at *time.Time
clearedFields map[string]struct{}
@ -5775,6 +5776,38 @@ func (m *MembershipMutation) ResetGroupID() {
m.group = nil
}
// SetIsPrimary sets the "is_primary" field.
func (m *MembershipMutation) SetIsPrimary(b bool) {
m.is_primary = &b
}
// IsPrimary returns the value of the "is_primary" field in the mutation.
func (m *MembershipMutation) IsPrimary() (r bool, exists bool) {
v := m.is_primary
if v == nil {
return
}
return *v, true
}
// ClearIsPrimary clears the value of the "is_primary" field.
func (m *MembershipMutation) ClearIsPrimary() {
m.is_primary = nil
m.clearedFields[membership.FieldIsPrimary] = struct{}{}
}
// IsPrimaryCleared returns if the "is_primary" field was cleared in this mutation.
func (m *MembershipMutation) IsPrimaryCleared() bool {
_, ok := m.clearedFields[membership.FieldIsPrimary]
return ok
}
// ResetIsPrimary resets all changes to the "is_primary" field.
func (m *MembershipMutation) ResetIsPrimary() {
m.is_primary = nil
delete(m.clearedFields, membership.FieldIsPrimary)
}
// SetCreatedAt sets the "created_at" field.
func (m *MembershipMutation) SetCreatedAt(t time.Time) {
m.created_at = &t
@ -5914,13 +5947,16 @@ func (m *MembershipMutation) Type() string {
// order to get all numeric fields that were incremented/decremented, call
// AddedFields().
func (m *MembershipMutation) Fields() []string {
fields := make([]string, 0, 4)
fields := make([]string, 0, 5)
if m.user != nil {
fields = append(fields, membership.FieldUserID)
}
if m.group != nil {
fields = append(fields, membership.FieldGroupID)
}
if m.is_primary != nil {
fields = append(fields, membership.FieldIsPrimary)
}
if m.created_at != nil {
fields = append(fields, membership.FieldCreatedAt)
}
@ -5939,6 +5975,8 @@ func (m *MembershipMutation) Field(name string) (ent.Value, bool) {
return m.UserID()
case membership.FieldGroupID:
return m.GroupID()
case membership.FieldIsPrimary:
return m.IsPrimary()
case membership.FieldCreatedAt:
return m.CreatedAt()
case membership.FieldExpiresAt:
@ -5973,6 +6011,13 @@ func (m *MembershipMutation) SetField(name string, value ent.Value) error {
}
m.SetGroupID(v)
return nil
case membership.FieldIsPrimary:
v, ok := value.(bool)
if !ok {
return fmt.Errorf("unexpected type %T for field %s", value, name)
}
m.SetIsPrimary(v)
return nil
case membership.FieldCreatedAt:
v, ok := value.(time.Time)
if !ok {
@ -6020,6 +6065,9 @@ func (m *MembershipMutation) AddField(name string, value ent.Value) error {
// mutation.
func (m *MembershipMutation) ClearedFields() []string {
var fields []string
if m.FieldCleared(membership.FieldIsPrimary) {
fields = append(fields, membership.FieldIsPrimary)
}
if m.FieldCleared(membership.FieldExpiresAt) {
fields = append(fields, membership.FieldExpiresAt)
}
@ -6037,6 +6085,9 @@ func (m *MembershipMutation) FieldCleared(name string) bool {
// error if the field is not defined in the schema.
func (m *MembershipMutation) ClearField(name string) error {
switch name {
case membership.FieldIsPrimary:
m.ClearIsPrimary()
return nil
case membership.FieldExpiresAt:
m.ClearExpiresAt()
return nil
@ -6054,6 +6105,9 @@ func (m *MembershipMutation) ResetField(name string) error {
case membership.FieldGroupID:
m.ResetGroupID()
return nil
case membership.FieldIsPrimary:
m.ResetIsPrimary()
return nil
case membership.FieldCreatedAt:
m.ResetCreatedAt()
return nil

@ -133,8 +133,12 @@ func init() {
group.DefaultSettings = groupDescSettings.Default.(*types.GroupSetting)
membershipFields := schema.Membership{}.Fields()
_ = membershipFields
// membershipDescIsPrimary is the schema descriptor for is_primary field.
membershipDescIsPrimary := membershipFields[2].Descriptor()
// membership.DefaultIsPrimary holds the default value on creation for the is_primary field.
membership.DefaultIsPrimary = membershipDescIsPrimary.Default.(bool)
// membershipDescCreatedAt is the schema descriptor for created_at field.
membershipDescCreatedAt := membershipFields[2].Descriptor()
membershipDescCreatedAt := membershipFields[3].Descriptor()
// membership.DefaultCreatedAt holds the default value on creation for the created_at field.
membership.DefaultCreatedAt = membershipDescCreatedAt.Default.(func() time.Time)
metadataMixin := schema.Metadata{}.Mixin()

@ -24,6 +24,7 @@ func (Membership) Fields() []ent.Field {
return []ent.Field{
field.Int("user_id"),
field.Int("group_id"),
field.Bool("is_primary").Default(false).Optional(),
field.Time("created_at").Default(time.Now),
field.Time("expires_at").Nillable().Optional(),
}

@ -64,6 +64,17 @@ func (u *User) GroupMaxAria2BatchSize() int {
}
func (u *User) GetPrimaryGroup() *Group {
// TODO: design user primary group
panic("implement me")
g, ok := lo.Find(u.Edges.Membership, func(d *Membership) bool {
return d.IsPrimary
})
if ok {
return g.Edges.Group
}
if len(u.Edges.Group) > 0 {
return u.Edges.Group[0]
}
return nil
}

@ -12,7 +12,7 @@ const (
DataFolder = "data"
)
var UseWorkingDir = false
var UseWorkingDir = true
// DotPathToStandardPath 将","分割的路径转换为标准路径
func DotPathToStandardPath(path string) string {

Loading…
Cancel
Save