Make it possible to change more user fields

This commit is contained in:
Eli Ribble 2026-04-02 14:22:45 +00:00
parent 7ee70b24ee
commit fc56c1406a
No known key found for this signature in database
8 changed files with 113 additions and 73 deletions

View file

@ -40,10 +40,10 @@ type User struct {
PasswordHashType enums.Hashtype `db:"password_hash_type" `
PasswordHash string `db:"password_hash" `
Role enums.Userrole `db:"role" `
IsActive bool `db:"is_active" `
IsDronePilot null.Val[bool] `db:"is_drone_pilot" `
IsWarrant null.Val[bool] `db:"is_warrant" `
Avatar null.Val[uuid.UUID] `db:"avatar" `
IsActive bool `db:"is_active" `
IsDronePilot bool `db:"is_drone_pilot" `
IsWarrant bool `db:"is_warrant" `
R userR `db:"-" `
}
@ -93,7 +93,7 @@ type userR struct {
func buildUserColumns(alias string) userColumns {
return userColumns{
ColumnsExpr: expr.NewColumnsExpr(
"id", "arcgis_access_token", "arcgis_license", "arcgis_refresh_token", "arcgis_refresh_token_expires", "arcgis_role", "display_name", "email", "organization_id", "username", "password_hash_type", "password_hash", "role", "is_active", "is_drone_pilot", "is_warrant", "avatar",
"id", "arcgis_access_token", "arcgis_license", "arcgis_refresh_token", "arcgis_refresh_token_expires", "arcgis_role", "display_name", "email", "organization_id", "username", "password_hash_type", "password_hash", "role", "avatar", "is_active", "is_drone_pilot", "is_warrant",
).WithParent("user_"),
tableAlias: alias,
ID: psql.Quote(alias, "id"),
@ -109,10 +109,10 @@ func buildUserColumns(alias string) userColumns {
PasswordHashType: psql.Quote(alias, "password_hash_type"),
PasswordHash: psql.Quote(alias, "password_hash"),
Role: psql.Quote(alias, "role"),
Avatar: psql.Quote(alias, "avatar"),
IsActive: psql.Quote(alias, "is_active"),
IsDronePilot: psql.Quote(alias, "is_drone_pilot"),
IsWarrant: psql.Quote(alias, "is_warrant"),
Avatar: psql.Quote(alias, "avatar"),
}
}
@ -132,10 +132,10 @@ type userColumns struct {
PasswordHashType psql.Expression
PasswordHash psql.Expression
Role psql.Expression
Avatar psql.Expression
IsActive psql.Expression
IsDronePilot psql.Expression
IsWarrant psql.Expression
Avatar psql.Expression
}
func (c userColumns) Alias() string {
@ -163,10 +163,10 @@ type UserSetter struct {
PasswordHashType omit.Val[enums.Hashtype] `db:"password_hash_type" `
PasswordHash omit.Val[string] `db:"password_hash" `
Role omit.Val[enums.Userrole] `db:"role" `
IsActive omit.Val[bool] `db:"is_active" `
IsDronePilot omitnull.Val[bool] `db:"is_drone_pilot" `
IsWarrant omitnull.Val[bool] `db:"is_warrant" `
Avatar omitnull.Val[uuid.UUID] `db:"avatar" `
IsActive omit.Val[bool] `db:"is_active" `
IsDronePilot omit.Val[bool] `db:"is_drone_pilot" `
IsWarrant omit.Val[bool] `db:"is_warrant" `
}
func (s UserSetter) SetColumns() []string {
@ -210,18 +210,18 @@ func (s UserSetter) SetColumns() []string {
if s.Role.IsValue() {
vals = append(vals, "role")
}
if !s.Avatar.IsUnset() {
vals = append(vals, "avatar")
}
if s.IsActive.IsValue() {
vals = append(vals, "is_active")
}
if !s.IsDronePilot.IsUnset() {
if s.IsDronePilot.IsValue() {
vals = append(vals, "is_drone_pilot")
}
if !s.IsWarrant.IsUnset() {
if s.IsWarrant.IsValue() {
vals = append(vals, "is_warrant")
}
if !s.Avatar.IsUnset() {
vals = append(vals, "avatar")
}
return vals
}
@ -265,17 +265,17 @@ func (s UserSetter) Overwrite(t *User) {
if s.Role.IsValue() {
t.Role = s.Role.MustGet()
}
if !s.Avatar.IsUnset() {
t.Avatar = s.Avatar.MustGetNull()
}
if s.IsActive.IsValue() {
t.IsActive = s.IsActive.MustGet()
}
if !s.IsDronePilot.IsUnset() {
t.IsDronePilot = s.IsDronePilot.MustGetNull()
if s.IsDronePilot.IsValue() {
t.IsDronePilot = s.IsDronePilot.MustGet()
}
if !s.IsWarrant.IsUnset() {
t.IsWarrant = s.IsWarrant.MustGetNull()
}
if !s.Avatar.IsUnset() {
t.Avatar = s.Avatar.MustGetNull()
if s.IsWarrant.IsValue() {
t.IsWarrant = s.IsWarrant.MustGet()
}
}
@ -364,26 +364,26 @@ func (s *UserSetter) Apply(q *dialect.InsertQuery) {
vals[12] = psql.Raw("DEFAULT")
}
if s.IsActive.IsValue() {
vals[13] = psql.Arg(s.IsActive.MustGet())
if !s.Avatar.IsUnset() {
vals[13] = psql.Arg(s.Avatar.MustGetNull())
} else {
vals[13] = psql.Raw("DEFAULT")
}
if !s.IsDronePilot.IsUnset() {
vals[14] = psql.Arg(s.IsDronePilot.MustGetNull())
if s.IsActive.IsValue() {
vals[14] = psql.Arg(s.IsActive.MustGet())
} else {
vals[14] = psql.Raw("DEFAULT")
}
if !s.IsWarrant.IsUnset() {
vals[15] = psql.Arg(s.IsWarrant.MustGetNull())
if s.IsDronePilot.IsValue() {
vals[15] = psql.Arg(s.IsDronePilot.MustGet())
} else {
vals[15] = psql.Raw("DEFAULT")
}
if !s.Avatar.IsUnset() {
vals[16] = psql.Arg(s.Avatar.MustGetNull())
if s.IsWarrant.IsValue() {
vals[16] = psql.Arg(s.IsWarrant.MustGet())
} else {
vals[16] = psql.Raw("DEFAULT")
}
@ -490,6 +490,13 @@ func (s UserSetter) Expressions(prefix ...string) []bob.Expression {
}})
}
if !s.Avatar.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "avatar")...),
psql.Arg(s.Avatar),
}})
}
if s.IsActive.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "is_active")...),
@ -497,27 +504,20 @@ func (s UserSetter) Expressions(prefix ...string) []bob.Expression {
}})
}
if !s.IsDronePilot.IsUnset() {
if s.IsDronePilot.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "is_drone_pilot")...),
psql.Arg(s.IsDronePilot),
}})
}
if !s.IsWarrant.IsUnset() {
if s.IsWarrant.IsValue() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "is_warrant")...),
psql.Arg(s.IsWarrant),
}})
}
if !s.Avatar.IsUnset() {
exprs = append(exprs, expr.Join{Sep: " = ", Exprs: []bob.Expression{
psql.Quote(append(prefix, "avatar")...),
psql.Arg(s.Avatar),
}})
}
return exprs
}
@ -3314,10 +3314,10 @@ type userWhere[Q psql.Filterable] struct {
PasswordHashType psql.WhereMod[Q, enums.Hashtype]
PasswordHash psql.WhereMod[Q, string]
Role psql.WhereMod[Q, enums.Userrole]
IsActive psql.WhereMod[Q, bool]
IsDronePilot psql.WhereNullMod[Q, bool]
IsWarrant psql.WhereNullMod[Q, bool]
Avatar psql.WhereNullMod[Q, uuid.UUID]
IsActive psql.WhereMod[Q, bool]
IsDronePilot psql.WhereMod[Q, bool]
IsWarrant psql.WhereMod[Q, bool]
}
func (userWhere[Q]) AliasedAs(alias string) userWhere[Q] {
@ -3339,10 +3339,10 @@ func buildUserWhere[Q psql.Filterable](cols userColumns) userWhere[Q] {
PasswordHashType: psql.Where[Q, enums.Hashtype](cols.PasswordHashType),
PasswordHash: psql.Where[Q, string](cols.PasswordHash),
Role: psql.Where[Q, enums.Userrole](cols.Role),
IsActive: psql.Where[Q, bool](cols.IsActive),
IsDronePilot: psql.WhereNull[Q, bool](cols.IsDronePilot),
IsWarrant: psql.WhereNull[Q, bool](cols.IsWarrant),
Avatar: psql.WhereNull[Q, uuid.UUID](cols.Avatar),
IsActive: psql.Where[Q, bool](cols.IsActive),
IsDronePilot: psql.Where[Q, bool](cols.IsDronePilot),
IsWarrant: psql.Where[Q, bool](cols.IsWarrant),
}
}