Fix MS365 attributes handling
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
@@ -46,6 +46,23 @@ type (
|
||||
OrganizationName string `db:"organization_name"`
|
||||
UserName *string `db:"user_name"`
|
||||
ExternalID *string `db:"external_id"`
|
||||
NickName *string `db:"nick_name"`
|
||||
Locale *string `db:"locale"`
|
||||
Timezone *string `db:"timezone"`
|
||||
ProfileUrl *string `db:"profile_url"`
|
||||
PreferredLanguage *string `db:"preferred_language"`
|
||||
GivenName *string `db:"given_name"`
|
||||
FamilyName *string `db:"family_name"`
|
||||
FormattedName *string `db:"formatted_name"`
|
||||
MiddleName *string `db:"middle_name"`
|
||||
HonorificPrefix *string `db:"honorific_prefix"`
|
||||
HonorificSuffix *string `db:"honorific_suffix"`
|
||||
EmployeeNumber *string `db:"employee_number"`
|
||||
Department *string `db:"department"`
|
||||
CostCenter *string `db:"cost_center"`
|
||||
EnterpriseOrganization *string `db:"enterprise_organization"`
|
||||
Division *string `db:"division"`
|
||||
ManagerValue *string `db:"manager_value"`
|
||||
CreatedAt time.Time `db:"created_at"`
|
||||
UpdatedAt time.Time `db:"updated_at"`
|
||||
}
|
||||
@@ -111,6 +128,23 @@ SELECT
|
||||
'' AS organization_name,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM
|
||||
@@ -171,6 +205,23 @@ SELECT
|
||||
'' AS organization_name,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM
|
||||
@@ -234,6 +285,23 @@ SELECT
|
||||
'' AS organization_name,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM
|
||||
@@ -290,6 +358,23 @@ WITH profiles AS (
|
||||
p.contract_end_date,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM
|
||||
@@ -316,6 +401,23 @@ SELECT
|
||||
'' AS organization_name,
|
||||
user_name,
|
||||
external_id,
|
||||
nick_name,
|
||||
locale,
|
||||
timezone,
|
||||
profile_url,
|
||||
preferred_language,
|
||||
given_name,
|
||||
family_name,
|
||||
formatted_name,
|
||||
middle_name,
|
||||
honorific_prefix,
|
||||
honorific_suffix,
|
||||
employee_number,
|
||||
department,
|
||||
cost_center,
|
||||
enterprise_organization,
|
||||
division,
|
||||
manager_value,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM profiles
|
||||
@@ -369,6 +471,23 @@ WITH profiles AS (
|
||||
p.contract_end_date,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM
|
||||
@@ -394,6 +513,23 @@ SELECT
|
||||
o.name AS organization_name,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM profiles p
|
||||
@@ -446,6 +582,23 @@ WITH profiles AS (
|
||||
mp.contract_end_date,
|
||||
mp.user_name,
|
||||
mp.external_id,
|
||||
mp.nick_name,
|
||||
mp.locale,
|
||||
mp.timezone,
|
||||
mp.profile_url,
|
||||
mp.preferred_language,
|
||||
mp.given_name,
|
||||
mp.family_name,
|
||||
mp.formatted_name,
|
||||
mp.middle_name,
|
||||
mp.honorific_prefix,
|
||||
mp.honorific_suffix,
|
||||
mp.employee_number,
|
||||
mp.department,
|
||||
mp.cost_center,
|
||||
mp.enterprise_organization,
|
||||
mp.division,
|
||||
mp.manager_value,
|
||||
mp.created_at,
|
||||
mp.updated_at
|
||||
FROM
|
||||
@@ -475,6 +628,23 @@ SELECT
|
||||
'' AS organization_name,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM profiles p
|
||||
@@ -556,6 +726,23 @@ WITH profiles AS (
|
||||
mp.contract_end_date,
|
||||
mp.user_name,
|
||||
mp.external_id,
|
||||
mp.nick_name,
|
||||
mp.locale,
|
||||
mp.timezone,
|
||||
mp.profile_url,
|
||||
mp.preferred_language,
|
||||
mp.given_name,
|
||||
mp.family_name,
|
||||
mp.formatted_name,
|
||||
mp.middle_name,
|
||||
mp.honorific_prefix,
|
||||
mp.honorific_suffix,
|
||||
mp.employee_number,
|
||||
mp.department,
|
||||
mp.cost_center,
|
||||
mp.enterprise_organization,
|
||||
mp.division,
|
||||
mp.manager_value,
|
||||
mp.created_at,
|
||||
mp.updated_at
|
||||
FROM
|
||||
@@ -585,6 +772,23 @@ SELECT
|
||||
'' AS organization_name,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM profiles p
|
||||
@@ -667,6 +871,23 @@ WITH attendees AS (
|
||||
p.contract_end_date,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at,
|
||||
ma.created_at AS attendee_created_at
|
||||
@@ -695,6 +916,23 @@ SELECT
|
||||
'' AS organization_name,
|
||||
user_name,
|
||||
external_id,
|
||||
nick_name,
|
||||
locale,
|
||||
timezone,
|
||||
profile_url,
|
||||
preferred_language,
|
||||
given_name,
|
||||
family_name,
|
||||
formatted_name,
|
||||
middle_name,
|
||||
honorific_prefix,
|
||||
honorific_suffix,
|
||||
employee_number,
|
||||
department,
|
||||
cost_center,
|
||||
enterprise_organization,
|
||||
division,
|
||||
manager_value,
|
||||
created_at,
|
||||
updated_at
|
||||
FROM
|
||||
@@ -758,6 +996,23 @@ SELECT
|
||||
'' AS organization_name,
|
||||
p.user_name,
|
||||
p.external_id,
|
||||
p.nick_name,
|
||||
p.locale,
|
||||
p.timezone,
|
||||
p.profile_url,
|
||||
p.preferred_language,
|
||||
p.given_name,
|
||||
p.family_name,
|
||||
p.formatted_name,
|
||||
p.middle_name,
|
||||
p.honorific_prefix,
|
||||
p.honorific_suffix,
|
||||
p.employee_number,
|
||||
p.department,
|
||||
p.cost_center,
|
||||
p.enterprise_organization,
|
||||
p.division,
|
||||
p.manager_value,
|
||||
p.created_at,
|
||||
p.updated_at
|
||||
FROM
|
||||
@@ -913,6 +1168,23 @@ INSERT INTO
|
||||
contract_end_date,
|
||||
user_name,
|
||||
external_id,
|
||||
nick_name,
|
||||
locale,
|
||||
timezone,
|
||||
profile_url,
|
||||
preferred_language,
|
||||
given_name,
|
||||
family_name,
|
||||
formatted_name,
|
||||
middle_name,
|
||||
honorific_prefix,
|
||||
honorific_suffix,
|
||||
employee_number,
|
||||
department,
|
||||
cost_center,
|
||||
enterprise_organization,
|
||||
division,
|
||||
manager_value,
|
||||
created_at,
|
||||
updated_at
|
||||
)
|
||||
@@ -931,6 +1203,23 @@ VALUES (
|
||||
@contract_end_date,
|
||||
@user_name,
|
||||
@external_id,
|
||||
@nick_name,
|
||||
@locale,
|
||||
@timezone,
|
||||
@profile_url,
|
||||
@preferred_language,
|
||||
@given_name,
|
||||
@family_name,
|
||||
@formatted_name,
|
||||
@middle_name,
|
||||
@honorific_prefix,
|
||||
@honorific_suffix,
|
||||
@employee_number,
|
||||
@department,
|
||||
@cost_center,
|
||||
@enterprise_organization,
|
||||
@division,
|
||||
@manager_value,
|
||||
@created_at,
|
||||
@updated_at
|
||||
)
|
||||
@@ -950,7 +1239,24 @@ VALUES (
|
||||
"contract_start_date": p.ContractStartDate,
|
||||
"contract_end_date": p.ContractEndDate,
|
||||
"user_name": p.UserName,
|
||||
"external_id": p.ExternalID,
|
||||
"external_id": p.ExternalID,
|
||||
"nick_name": p.NickName,
|
||||
"locale": p.Locale,
|
||||
"timezone": p.Timezone,
|
||||
"profile_url": p.ProfileUrl,
|
||||
"preferred_language": p.PreferredLanguage,
|
||||
"given_name": p.GivenName,
|
||||
"family_name": p.FamilyName,
|
||||
"formatted_name": p.FormattedName,
|
||||
"middle_name": p.MiddleName,
|
||||
"honorific_prefix": p.HonorificPrefix,
|
||||
"honorific_suffix": p.HonorificSuffix,
|
||||
"employee_number": p.EmployeeNumber,
|
||||
"department": p.Department,
|
||||
"cost_center": p.CostCenter,
|
||||
"enterprise_organization": p.EnterpriseOrganization,
|
||||
"division": p.Division,
|
||||
"manager_value": p.ManagerValue,
|
||||
"created_at": p.CreatedAt,
|
||||
"updated_at": p.UpdatedAt,
|
||||
}
|
||||
@@ -987,6 +1293,23 @@ SET
|
||||
contract_end_date = @contract_end_date,
|
||||
user_name = @user_name,
|
||||
external_id = @external_id,
|
||||
nick_name = @nick_name,
|
||||
locale = @locale,
|
||||
timezone = @timezone,
|
||||
profile_url = @profile_url,
|
||||
preferred_language = @preferred_language,
|
||||
given_name = @given_name,
|
||||
family_name = @family_name,
|
||||
formatted_name = @formatted_name,
|
||||
middle_name = @middle_name,
|
||||
honorific_prefix = @honorific_prefix,
|
||||
honorific_suffix = @honorific_suffix,
|
||||
employee_number = @employee_number,
|
||||
department = @department,
|
||||
cost_center = @cost_center,
|
||||
enterprise_organization = @enterprise_organization,
|
||||
division = @division,
|
||||
manager_value = @manager_value,
|
||||
updated_at = @updated_at
|
||||
WHERE
|
||||
id = @id
|
||||
@@ -1006,7 +1329,24 @@ WHERE
|
||||
"contract_start_date": p.ContractStartDate,
|
||||
"contract_end_date": p.ContractEndDate,
|
||||
"user_name": p.UserName,
|
||||
"external_id": p.ExternalID,
|
||||
"external_id": p.ExternalID,
|
||||
"nick_name": p.NickName,
|
||||
"locale": p.Locale,
|
||||
"timezone": p.Timezone,
|
||||
"profile_url": p.ProfileUrl,
|
||||
"preferred_language": p.PreferredLanguage,
|
||||
"given_name": p.GivenName,
|
||||
"family_name": p.FamilyName,
|
||||
"formatted_name": p.FormattedName,
|
||||
"middle_name": p.MiddleName,
|
||||
"honorific_prefix": p.HonorificPrefix,
|
||||
"honorific_suffix": p.HonorificSuffix,
|
||||
"employee_number": p.EmployeeNumber,
|
||||
"department": p.Department,
|
||||
"cost_center": p.CostCenter,
|
||||
"enterprise_organization": p.EnterpriseOrganization,
|
||||
"division": p.Division,
|
||||
"manager_value": p.ManagerValue,
|
||||
"updated_at": p.UpdatedAt,
|
||||
}
|
||||
maps.Copy(args, scope.SQLArguments())
|
||||
|
||||
@@ -20,13 +20,13 @@ import (
|
||||
)
|
||||
|
||||
type (
|
||||
MembershipProfileKind uint8
|
||||
MembershipProfileKind string
|
||||
)
|
||||
|
||||
const (
|
||||
MembershipProfileKindEmployee MembershipProfileKind = iota
|
||||
MembershipProfileKindContractor
|
||||
MembershipProfileKindServiceAccount
|
||||
MembershipProfileKindEmployee MembershipProfileKind = "EMPLOYEE"
|
||||
MembershipProfileKindContractor MembershipProfileKind = "CONTRACTOR"
|
||||
MembershipProfileKindServiceAccount MembershipProfileKind = "SERVICE_ACCOUNT"
|
||||
)
|
||||
|
||||
func MembershipProfileKinds() []MembershipProfileKind {
|
||||
@@ -38,55 +38,30 @@ func MembershipProfileKinds() []MembershipProfileKind {
|
||||
}
|
||||
|
||||
func (mpk MembershipProfileKind) MarshalText() ([]byte, error) {
|
||||
return []byte(mpk.String()), nil
|
||||
return []byte(mpk), nil
|
||||
}
|
||||
|
||||
func (mpk *MembershipProfileKind) UnmarshalText(data []byte) error {
|
||||
val := string(data)
|
||||
|
||||
switch val {
|
||||
case MembershipProfileKindEmployee.String():
|
||||
*mpk = MembershipProfileKindEmployee
|
||||
case MembershipProfileKindContractor.String():
|
||||
*mpk = MembershipProfileKindContractor
|
||||
case MembershipProfileKindServiceAccount.String():
|
||||
*mpk = MembershipProfileKindServiceAccount
|
||||
default:
|
||||
return fmt.Errorf("invalid MembershipProfileKind value: %q", val)
|
||||
}
|
||||
|
||||
*mpk = MembershipProfileKind(data)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mpk MembershipProfileKind) String() string {
|
||||
var val string
|
||||
|
||||
switch mpk {
|
||||
case MembershipProfileKindEmployee:
|
||||
val = "EMPLOYEE"
|
||||
case MembershipProfileKindContractor:
|
||||
val = "CONTRACTOR"
|
||||
case MembershipProfileKindServiceAccount:
|
||||
val = "SERVICE_ACCOUNT"
|
||||
}
|
||||
|
||||
return val
|
||||
return string(mpk)
|
||||
}
|
||||
|
||||
func (mpk *MembershipProfileKind) Scan(value any) error {
|
||||
var val string
|
||||
switch v := value.(type) {
|
||||
case string:
|
||||
val = v
|
||||
*mpk = MembershipProfileKind(v)
|
||||
case []byte:
|
||||
val = string(v)
|
||||
*mpk = MembershipProfileKind(v)
|
||||
default:
|
||||
return fmt.Errorf("unsupported type for MembershipProfileKind: %T", value)
|
||||
}
|
||||
|
||||
return mpk.UnmarshalText([]byte(val))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (mpk MembershipProfileKind) Value() (driver.Value, error) {
|
||||
return mpk.String(), nil
|
||||
return string(mpk), nil
|
||||
}
|
||||
|
||||
6
pkg/coredata/migrations/20260309T150000Z.sql
Normal file
6
pkg/coredata/migrations/20260309T150000Z.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
ALTER TABLE iam_membership_profiles
|
||||
ALTER COLUMN kind TYPE TEXT USING kind::TEXT,
|
||||
ADD COLUMN nick_name TEXT,
|
||||
ADD COLUMN locale TEXT,
|
||||
ADD COLUMN timezone TEXT,
|
||||
ADD COLUMN profile_url TEXT;
|
||||
14
pkg/coredata/migrations/20260309T160000Z.sql
Normal file
14
pkg/coredata/migrations/20260309T160000Z.sql
Normal file
@@ -0,0 +1,14 @@
|
||||
ALTER TABLE iam_membership_profiles
|
||||
ADD COLUMN preferred_language TEXT,
|
||||
ADD COLUMN given_name TEXT,
|
||||
ADD COLUMN family_name TEXT,
|
||||
ADD COLUMN formatted_name TEXT,
|
||||
ADD COLUMN middle_name TEXT,
|
||||
ADD COLUMN honorific_prefix TEXT,
|
||||
ADD COLUMN honorific_suffix TEXT,
|
||||
ADD COLUMN employee_number TEXT,
|
||||
ADD COLUMN department TEXT,
|
||||
ADD COLUMN cost_center TEXT,
|
||||
ADD COLUMN enterprise_organization TEXT,
|
||||
ADD COLUMN division TEXT,
|
||||
ADD COLUMN manager_value TEXT;
|
||||
Reference in New Issue
Block a user