user: refactor scanner to use sqlMachine and sqlHuman structs

This commit is contained in:
Marco Ardizzone
2025-08-06 12:03:48 +02:00
parent 0668f09307
commit 3bb7c16782

View File

@@ -1335,26 +1335,7 @@ func prepareUsersQuery() (sq.SelectBuilder, func(*sql.Rows) (*Users, error)) {
loginNames := database.TextArray[string]{} loginNames := database.TextArray[string]{}
preferredLoginName := sql.NullString{} preferredLoginName := sql.NullString{}
humanID := sql.NullString{} human, machine := sqlHuman{}, sqlMachine{}
firstName := sql.NullString{}
lastName := sql.NullString{}
nickName := sql.NullString{}
displayName := sql.NullString{}
preferredLanguage := sql.NullString{}
gender := sql.NullInt32{}
avatarKey := sql.NullString{}
email := sql.NullString{}
isEmailVerified := sql.NullBool{}
phone := sql.NullString{}
isPhoneVerified := sql.NullBool{}
passwordChangeRequired := sql.NullBool{}
passwordChanged := sql.NullTime{}
machineID := sql.NullString{}
name := sql.NullString{}
description := sql.NullString{}
encodedHash := sql.NullString{}
accessTokenType := sql.NullInt32{}
err := rows.Scan( err := rows.Scan(
&u.ID, &u.ID,
@@ -1367,25 +1348,28 @@ func prepareUsersQuery() (sq.SelectBuilder, func(*sql.Rows) (*Users, error)) {
&u.Username, &u.Username,
&loginNames, &loginNames,
&preferredLoginName, &preferredLoginName,
&humanID,
&firstName, &human.humanID,
&lastName, &human.firstName,
&nickName, &human.lastName,
&displayName, &human.nickName,
&preferredLanguage, &human.displayName,
&gender, &human.preferredLanguage,
&avatarKey, &human.gender,
&email, &human.avatarKey,
&isEmailVerified, &human.email,
&phone, &human.isEmailVerified,
&isPhoneVerified, &human.phone,
&passwordChangeRequired, &human.isPhoneVerified,
&passwordChanged, &human.passwordChangeRequired,
&machineID, &human.passwordChanged,
&name,
&description, &machine.machineID,
&encodedHash, &machine.name,
&accessTokenType, &machine.description,
&machine.encodedSecret,
&machine.accessTokenType,
&count, &count,
) )
if err != nil { if err != nil {
@@ -1397,28 +1381,28 @@ func prepareUsersQuery() (sq.SelectBuilder, func(*sql.Rows) (*Users, error)) {
u.PreferredLoginName = preferredLoginName.String u.PreferredLoginName = preferredLoginName.String
} }
if humanID.Valid { if human.humanID.Valid {
u.Human = &Human{ u.Human = &Human{
FirstName: firstName.String, FirstName: human.firstName.String,
LastName: lastName.String, LastName: human.lastName.String,
NickName: nickName.String, NickName: human.nickName.String,
DisplayName: displayName.String, DisplayName: human.displayName.String,
AvatarKey: avatarKey.String, AvatarKey: human.avatarKey.String,
PreferredLanguage: language.Make(preferredLanguage.String), PreferredLanguage: language.Make(human.preferredLanguage.String),
Gender: domain.Gender(gender.Int32), Gender: domain.Gender(human.gender.Int32),
Email: domain.EmailAddress(email.String), Email: domain.EmailAddress(human.email.String),
IsEmailVerified: isEmailVerified.Bool, IsEmailVerified: human.isEmailVerified.Bool,
Phone: domain.PhoneNumber(phone.String), Phone: domain.PhoneNumber(human.phone.String),
IsPhoneVerified: isPhoneVerified.Bool, IsPhoneVerified: human.isPhoneVerified.Bool,
PasswordChangeRequired: passwordChangeRequired.Bool, PasswordChangeRequired: human.passwordChangeRequired.Bool,
PasswordChanged: passwordChanged.Time, PasswordChanged: human.passwordChanged.Time,
} }
} else if machineID.Valid { } else if machine.machineID.Valid {
u.Machine = &Machine{ u.Machine = &Machine{
Name: name.String, Name: machine.name.String,
Description: description.String, Description: machine.description.String,
EncodedSecret: encodedHash.String, EncodedSecret: machine.encodedSecret.String,
AccessTokenType: domain.OIDCTokenType(accessTokenType.Int32), AccessTokenType: domain.OIDCTokenType(machine.accessTokenType.Int32),
} }
} }
@@ -1437,3 +1421,29 @@ func prepareUsersQuery() (sq.SelectBuilder, func(*sql.Rows) (*Users, error)) {
}, nil }, nil
} }
} }
type sqlHuman struct {
humanID sql.NullString
firstName sql.NullString
lastName sql.NullString
nickName sql.NullString
displayName sql.NullString
preferredLanguage sql.NullString
gender sql.NullInt32
avatarKey sql.NullString
email sql.NullString
isEmailVerified sql.NullBool
phone sql.NullString
isPhoneVerified sql.NullBool
passwordChangeRequired sql.NullBool
passwordChanged sql.NullTime
mfaInitSkipped sql.NullTime
}
type sqlMachine struct {
machineID sql.NullString
name sql.NullString
description sql.NullString
encodedSecret sql.NullString
accessTokenType sql.NullInt32
}