diff --git a/packages/identity-prisma-client/edge.js b/packages/identity-prisma-client/edge.js index 25c2195..5d09ad3 100644 --- a/packages/identity-prisma-client/edge.js +++ b/packages/identity-prisma-client/edge.js @@ -159,6 +159,13 @@ exports.Prisma.Invalid_handlesScalarFieldEnum = { invalid_handle: 'invalid_handle' }; +exports.Prisma.Locked_handlesScalarFieldEnum = { + locked_handle_id: 'locked_handle_id', + locked_handle: 'locked_handle', + locked_handle_lower: 'locked_handle_lower', + create_date: 'create_date' +}; + exports.Prisma.Security_groupsScalarFieldEnum = { group_id: 'group_id', description: 'description', @@ -354,6 +361,7 @@ exports.Prisma.ModelName = { email_type_lu: 'email_type_lu', id_sequences: 'id_sequences', invalid_handles: 'invalid_handles', + locked_handles: 'locked_handles', security_groups: 'security_groups', security_status_lu: 'security_status_lu', security_user: 'security_user', @@ -385,7 +393,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/Users/hentrymartin/development/identity-api-v6/packages/identity-prisma-client", + "value": "/home/jmgasper/Documents/Git/v6/identity-api-v6/packages/identity-prisma-client", "fromEnvVar": null }, "config": { @@ -394,7 +402,7 @@ const config = { "binaryTargets": [ { "fromEnvVar": null, - "value": "darwin-arm64", + "value": "debian-openssl-3.0.x", "native": true }, { @@ -403,7 +411,7 @@ const config = { } ], "previewFeatures": [], - "sourceFilePath": "/Users/hentrymartin/development/identity-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { @@ -425,13 +433,13 @@ const config = { } } }, - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"multiSchema\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/identity-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"IDENTITY_DB_URL\")\n schemas = [\"identity\"]\n}\n\n// IDENTITY SCHEMA MODELS\n// (Introspected from existing database)\n// -----------------------------------------\n\nmodel achievement_type_lu {\n achievement_type_id Decimal @id(map: \"achv_type_lu_pkey\") @db.Decimal(5, 0)\n achievement_type_desc String @db.VarChar(64)\n user_achievement user_achievement[]\n\n @@schema(\"identity\")\n}\n\nmodel country {\n country_code String @id @db.VarChar(3)\n country_name String @db.VarChar(40)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n participating Decimal? @db.Decimal(1, 0)\n default_taxform_id Decimal? @db.Decimal(10, 0)\n longitude Decimal? @db.Decimal(10, 7)\n latitude Decimal? @db.Decimal(10, 7)\n region String? @db.VarChar(64)\n iso_name String? @db.VarChar(128)\n iso_alpha2_code String? @db.VarChar(2)\n iso_alpha3_code String? @db.VarChar(3)\n\n @@schema(\"identity\")\n}\n\nmodel dice_connection {\n id Int @id(map: \"dice_connection_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n connection String? @db.VarChar(50)\n accepted Boolean @default(false)\n created_at DateTime @default(now()) @db.Timestamp(6)\n short_url String? @db.VarChar(100)\n con_created_at DateTime? @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([connection])\n @@schema(\"identity\")\n}\n\nmodel email {\n user_id Decimal? @db.Decimal(10, 0)\n email_id Decimal @id(map: \"u110_23\") @default(dbgenerated(\"nextval('sequence_email_seq'::regclass)\")) @db.Decimal(10, 0)\n email_type_id Decimal? @db.Decimal(5, 0)\n address String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n primary_ind Decimal? @db.Decimal(1, 0)\n status_id Decimal? @db.Decimal(3, 0)\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailstatuslu_fk\")\n email_type_lu email_type_lu? @relation(fields: [email_type_id], references: [email_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailtypelu_fk\")\n user_email_xref user_email_xref[]\n user user? @relation(\"UserToEmail\", fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([user_id, primary_ind], map: \"email_user_id_idx\")\n @@index([user_id, email_type_id, status_id])\n @@index([address, status_id])\n @@schema(\"identity\")\n}\n\nmodel email_status_lu {\n status_id Decimal @id(map: \"email_status_lu_pk\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n user_email_xref user_email_xref[] // Added back-relation to user_email_xref\n\n @@schema(\"identity\")\n}\n\nmodel email_type_lu {\n email_type_id Decimal @id(map: \"email_type_lu_pk\") @db.Decimal(5, 0)\n email_type_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n\n @@schema(\"identity\")\n}\n\nmodel id_sequences {\n name String @id @db.VarChar(254)\n next_block_start Decimal @db.Decimal(12, 0)\n block_size Decimal @db.Decimal(10, 0)\n exhausted Decimal @default(0) @db.Decimal(1, 0)\n\n @@schema(\"identity\")\n}\n\nmodel invalid_handles {\n invalid_handle_id Int @id(map: \"pk_invalid_hand556\")\n invalid_handle String @db.VarChar(20)\n\n @@schema(\"identity\")\n}\n\nmodel security_groups {\n group_id Decimal @id(map: \"pk_security_groups\") @db.Decimal(12, 0)\n description String @db.VarChar(254)\n challenge_group_ind Int @default(0) @db.SmallInt\n create_user_id Decimal? @db.Decimal(12, 0)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_status_lu {\n security_status_id Decimal @id(map: \"securitystatuslu_pkey\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(200)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_user {\n login_id Decimal @id(map: \"pk_security_user\") @db.Decimal(12, 0)\n user_id String @unique(map: \"security_user_i2\") @db.VarChar(50)\n password String @db.VarChar(300)\n create_user_id Decimal? @db.Decimal(12, 0)\n modify_date DateTime? @db.Timestamp(6)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel social_login_provider {\n social_login_provider_id Decimal @id(map: \"social_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n user_social_login user_social_login[]\n\n @@schema(\"identity\")\n}\n\nmodel sso_login_provider {\n sso_login_provider_id Decimal @id(map: \"sso_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n type String @db.VarChar(50)\n identify_email_enabled Boolean @default(true)\n identify_handle_enabled Boolean @default(true)\n user_sso_login user_sso_login[]\n\n @@schema(\"identity\")\n}\n\nmodel user {\n user_id Decimal @id(map: \"u175_45\") @default(dbgenerated(\"nextval('sequence_user_seq'::regclass)\")) @db.Decimal(10, 0)\n first_name String? @db.VarChar(64)\n last_name String? @db.VarChar(64)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n handle String @db.VarChar(50)\n last_login DateTime? @db.Timestamp(6)\n status String @db.VarChar(3)\n activation_code String? @db.VarChar(32)\n middle_name String? @db.VarChar(64)\n handle_lower String? @db.VarChar(50)\n timezone_id Decimal? @db.Decimal(5, 0)\n last_site_hit_date DateTime? @db.Timestamp(6)\n name_in_another_language String? @db.VarChar(64)\n password String? @db.VarChar(16)\n open_id String? @db.VarChar(200)\n reg_source String? @db.VarChar(20)\n utm_source String? @db.VarChar(50)\n utm_medium String? @db.VarChar(50)\n utm_campaign String? @db.VarChar(50)\n dice_connection dice_connection?\n user_2fa user_2fa?\n user_achievement user_achievement[]\n user_otp_email user_otp_email[]\n user_social_login user_social_login[]\n user_sso_login user_sso_login[]\n user_status user_status[]\n user_email_xref user_email_xref[]\n emails email[] @relation(\"UserToEmail\")\n\n @@index([activation_code], map: \"user_activ_code_idx\")\n @@index([handle])\n @@index([handle_lower], map: \"user_lower_handle_idx\")\n @@index([open_id])\n @@index([status, handle_lower])\n @@schema(\"identity\")\n}\n\nmodel user_2fa {\n id Int @id(map: \"user_2fa_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n mfa_enabled Boolean @default(false)\n dice_enabled Boolean @default(false)\n created_by Decimal @db.Decimal(10, 0)\n created_at DateTime @default(now()) @db.Timestamp(6)\n modified_by Decimal @db.Decimal(10, 0)\n modified_at DateTime @default(now()) @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@schema(\"identity\")\n}\n\n/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\nmodel user_achievement {\n user_id Decimal @db.Decimal(10, 0) // Made non-nullable for PK\n achievement_date DateTime @db.Date\n achievement_type_id Decimal @db.Decimal(5, 0)\n description String? @db.VarChar(255)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n achievement_type_lu achievement_type_lu @relation(fields: [achievement_type_id], references: [achievement_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_type_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_user_fk\") // Made user relation non-nullable as user_id is non-nullable\n\n // Define composite primary key\n @@id([user_id, achievement_type_id], map: \"user_achievement_pkey\") // Added @@id\n // @@ignore // Removed @@ignore\n @@schema(\"identity\")\n}\n\nmodel user_group_xref {\n user_group_id Decimal @id(map: \"pk_user_group_xref\") @default(dbgenerated(\"nextval('sequence_user_group_seq'::regclass)\")) @db.Decimal(12, 0)\n login_id Decimal? @db.Decimal(12, 0)\n group_id Decimal? @db.Decimal(12, 0)\n create_user_id Decimal? @db.Decimal(12, 0)\n security_status_id Decimal? @db.Decimal(3, 0)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n security_user security_user? @relation(fields: [login_id], references: [login_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref1\")\n security_groups security_groups? @relation(fields: [group_id], references: [group_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref2\")\n security_status_lu security_status_lu? @relation(fields: [security_status_id], references: [security_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"usergroupxref_status_fk\")\n\n @@unique([login_id, group_id], map: \"user_grp_xref_i2\")\n @@schema(\"identity\")\n}\n\nmodel user_otp_email {\n id Int @id(map: \"user_otp_email_pk\") @default(autoincrement())\n user_id Decimal @db.Decimal(10, 0)\n mode Int @db.SmallInt\n otp String @db.VarChar(6)\n expire_at DateTime @db.Timestamp(6)\n resend Boolean @default(false)\n fail_count Int @default(0) @db.SmallInt\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@unique([user_id, mode])\n @@schema(\"identity\")\n}\n\nmodel user_social_login {\n social_user_id String? @db.VarChar(254)\n user_id Decimal @db.Decimal(10, 0)\n social_login_provider_id Decimal @db.Decimal(10, 0)\n social_user_name String @db.VarChar(100)\n social_email String? @db.VarChar(100)\n social_email_verified Boolean?\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @db.Timestamp(6)\n social_login_provider social_login_provider @relation(fields: [social_login_provider_id], references: [social_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_user_fk\")\n\n @@id([user_id, social_login_provider_id], map: \"user_social_prkey\")\n @@index([social_user_id, social_login_provider_id])\n @@schema(\"identity\")\n}\n\nmodel user_sso_login {\n user_id Decimal @db.Decimal(10, 0)\n sso_user_id String @db.VarChar(100)\n sso_user_name String? @db.VarChar(100)\n provider_id Decimal @db.Decimal(10, 0)\n email String? @db.VarChar(100)\n sso_login_provider sso_login_provider @relation(fields: [provider_id], references: [sso_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_user_fk\")\n\n @@id([user_id, provider_id], map: \"user_sso_prkey\") // Primary key\n @@index([sso_user_id, provider_id], map: \"idx_user_social_login_sso_user_id_provider_id\") // Index only, NOT unique\n @@schema(\"identity\")\n}\n\nmodel user_status {\n user_id Decimal @db.Decimal(10, 0)\n user_status_type_id Decimal @db.Decimal(3, 0)\n user_status_id Decimal? @db.Decimal(5, 0)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_user_fk\")\n user_status_lu user_status_lu? @relation(fields: [user_status_id], references: [user_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatuslu_fk\")\n user_status_type_lu user_status_type_lu @relation(fields: [user_status_type_id], references: [user_status_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatustype_fk\")\n\n @@id([user_id, user_status_type_id], map: \"userstatus_pk\")\n @@schema(\"identity\")\n}\n\nmodel user_status_lu {\n user_status_id Decimal @id(map: \"u113_26\") @db.Decimal(5, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\nmodel user_status_type_lu {\n user_status_type_id Decimal @id(map: \"userstatustypelu_pk\") @db.Decimal(3, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\n// Explicit definition for the user-email join table\nmodel user_email_xref {\n user_id Decimal @db.Decimal(10, 0)\n email_id Decimal @db.Decimal(10, 0)\n is_primary Boolean // Assuming boolean based on name, adjust if Decimal(1,0)\n status_id Decimal @db.Decimal(3, 0) // Assuming relates to email_status_lu\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_user_fk\") // Define relation\n email email @relation(fields: [email_id], references: [email_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_email_fk\") // Define relation\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id]) // Optional relation to status lookup\n\n @@id([user_id, email_id], map: \"user_email_xref_pkey\") // Define composite primary key\n @@index([email_id], map: \"user_email_xref_email_idx\")\n @@index([user_id, status_id])\n @@schema(\"identity\")\n}\n\n// -----------------------------------------\n// (Migrated from MySQL DDL)\n// -----------------------------------------\n\nmodel Client {\n id Int @id @default(autoincrement()) @map(\"id\")\n clientId String @unique @map(\"client_id\")\n name String\n redirectUri String? @map(\"redirect_uri\") @db.VarChar(8192)\n secret String?\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0) // Use Timestamp(0) if you need second precision like MySQL datetime\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n @@map(\"client\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel Role {\n id Int @id @default(autoincrement()) @map(\"id\")\n name String @unique @db.VarChar(45)\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n roleAssignments RoleAssignment[] // Relation field\n\n @@map(\"role\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel RoleAssignment {\n id Int @id @default(autoincrement()) @map(\"id\")\n roleId Int @map(\"role_id\")\n subjectId Int @map(\"subject_id\")\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n subjectType Int @default(1) @map(\"subject_type\")\n\n role Role @relation(fields: [roleId], references: [id], map: \"role_id\") // Relation field\n\n @@unique([roleId, subjectId, subjectType], map: \"role_subject_id_subject_type\")\n @@index([subjectId], map: \"subject_id_idx\")\n @@index([roleId], map: \"role_id_idx\")\n @@index([subjectId, subjectType])\n @@map(\"role_assignment\")\n @@schema(\"identity\")\n}\n", - "inlineSchemaHash": "146549dc4277ba3db4608942c2cae9f5d81439e3f0cff4d805cba070b9eac179", + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"multiSchema\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/identity-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"IDENTITY_DB_URL\")\n schemas = [\"identity\"]\n}\n\n// IDENTITY SCHEMA MODELS\n// (Introspected from existing database)\n// -----------------------------------------\n\nmodel achievement_type_lu {\n achievement_type_id Decimal @id(map: \"achv_type_lu_pkey\") @db.Decimal(5, 0)\n achievement_type_desc String @db.VarChar(64)\n user_achievement user_achievement[]\n\n @@schema(\"identity\")\n}\n\nmodel country {\n country_code String @id @db.VarChar(3)\n country_name String @db.VarChar(40)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n participating Decimal? @db.Decimal(1, 0)\n default_taxform_id Decimal? @db.Decimal(10, 0)\n longitude Decimal? @db.Decimal(10, 7)\n latitude Decimal? @db.Decimal(10, 7)\n region String? @db.VarChar(64)\n iso_name String? @db.VarChar(128)\n iso_alpha2_code String? @db.VarChar(2)\n iso_alpha3_code String? @db.VarChar(3)\n\n @@schema(\"identity\")\n}\n\nmodel dice_connection {\n id Int @id(map: \"dice_connection_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n connection String? @db.VarChar(50)\n accepted Boolean @default(false)\n created_at DateTime @default(now()) @db.Timestamp(6)\n short_url String? @db.VarChar(100)\n con_created_at DateTime? @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([connection])\n @@schema(\"identity\")\n}\n\nmodel email {\n user_id Decimal? @db.Decimal(10, 0)\n email_id Decimal @id(map: \"u110_23\") @default(dbgenerated(\"nextval('sequence_email_seq'::regclass)\")) @db.Decimal(10, 0)\n email_type_id Decimal? @db.Decimal(5, 0)\n address String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n primary_ind Decimal? @db.Decimal(1, 0)\n status_id Decimal? @db.Decimal(3, 0)\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailstatuslu_fk\")\n email_type_lu email_type_lu? @relation(fields: [email_type_id], references: [email_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailtypelu_fk\")\n user_email_xref user_email_xref[]\n user user? @relation(\"UserToEmail\", fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([user_id, primary_ind], map: \"email_user_id_idx\")\n @@index([user_id, email_type_id, status_id])\n @@index([address, status_id])\n @@schema(\"identity\")\n}\n\nmodel email_status_lu {\n status_id Decimal @id(map: \"email_status_lu_pk\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n user_email_xref user_email_xref[] // Added back-relation to user_email_xref\n\n @@schema(\"identity\")\n}\n\nmodel email_type_lu {\n email_type_id Decimal @id(map: \"email_type_lu_pk\") @db.Decimal(5, 0)\n email_type_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n\n @@schema(\"identity\")\n}\n\nmodel id_sequences {\n name String @id @db.VarChar(254)\n next_block_start Decimal @db.Decimal(12, 0)\n block_size Decimal @db.Decimal(10, 0)\n exhausted Decimal @default(0) @db.Decimal(1, 0)\n\n @@schema(\"identity\")\n}\n\nmodel invalid_handles {\n invalid_handle_id Int @id(map: \"pk_invalid_hand556\")\n invalid_handle String @db.VarChar(20)\n\n @@schema(\"identity\")\n}\n\nmodel locked_handles {\n locked_handle_id Int @id(map: \"pk_locked_handles\") @default(autoincrement())\n locked_handle String @db.VarChar(50)\n locked_handle_lower String @unique(map: \"locked_handles_locked_handle_lower_key\") @db.VarChar(50)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n\n @@schema(\"identity\")\n}\n\nmodel security_groups {\n group_id Decimal @id(map: \"pk_security_groups\") @db.Decimal(12, 0)\n description String @db.VarChar(254)\n challenge_group_ind Int @default(0) @db.SmallInt\n create_user_id Decimal? @db.Decimal(12, 0)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_status_lu {\n security_status_id Decimal @id(map: \"securitystatuslu_pkey\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(200)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_user {\n login_id Decimal @id(map: \"pk_security_user\") @db.Decimal(12, 0)\n user_id String @unique(map: \"security_user_i2\") @db.VarChar(50)\n password String @db.VarChar(300)\n create_user_id Decimal? @db.Decimal(12, 0)\n modify_date DateTime? @db.Timestamp(6)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel social_login_provider {\n social_login_provider_id Decimal @id(map: \"social_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n user_social_login user_social_login[]\n\n @@schema(\"identity\")\n}\n\nmodel sso_login_provider {\n sso_login_provider_id Decimal @id(map: \"sso_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n type String @db.VarChar(50)\n identify_email_enabled Boolean @default(true)\n identify_handle_enabled Boolean @default(true)\n user_sso_login user_sso_login[]\n\n @@schema(\"identity\")\n}\n\nmodel user {\n user_id Decimal @id(map: \"u175_45\") @default(dbgenerated(\"nextval('sequence_user_seq'::regclass)\")) @db.Decimal(10, 0)\n first_name String? @db.VarChar(64)\n last_name String? @db.VarChar(64)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n handle String @db.VarChar(50)\n last_login DateTime? @db.Timestamp(6)\n status String @db.VarChar(3)\n activation_code String? @db.VarChar(32)\n middle_name String? @db.VarChar(64)\n handle_lower String? @db.VarChar(50)\n timezone_id Decimal? @db.Decimal(5, 0)\n last_site_hit_date DateTime? @db.Timestamp(6)\n name_in_another_language String? @db.VarChar(64)\n password String? @db.VarChar(16)\n open_id String? @db.VarChar(200)\n reg_source String? @db.VarChar(20)\n utm_source String? @db.VarChar(50)\n utm_medium String? @db.VarChar(50)\n utm_campaign String? @db.VarChar(50)\n dice_connection dice_connection?\n user_2fa user_2fa?\n user_achievement user_achievement[]\n user_otp_email user_otp_email[]\n user_social_login user_social_login[]\n user_sso_login user_sso_login[]\n user_status user_status[]\n user_email_xref user_email_xref[]\n emails email[] @relation(\"UserToEmail\")\n\n @@index([activation_code], map: \"user_activ_code_idx\")\n @@index([handle])\n @@index([handle_lower], map: \"user_lower_handle_idx\")\n @@index([open_id])\n @@index([status, handle_lower])\n @@schema(\"identity\")\n}\n\nmodel user_2fa {\n id Int @id(map: \"user_2fa_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n mfa_enabled Boolean @default(false)\n dice_enabled Boolean @default(false)\n created_by Decimal @db.Decimal(10, 0)\n created_at DateTime @default(now()) @db.Timestamp(6)\n modified_by Decimal @db.Decimal(10, 0)\n modified_at DateTime @default(now()) @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@schema(\"identity\")\n}\n\n/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\nmodel user_achievement {\n user_id Decimal @db.Decimal(10, 0) // Made non-nullable for PK\n achievement_date DateTime @db.Date\n achievement_type_id Decimal @db.Decimal(5, 0)\n description String? @db.VarChar(255)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n achievement_type_lu achievement_type_lu @relation(fields: [achievement_type_id], references: [achievement_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_type_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_user_fk\") // Made user relation non-nullable as user_id is non-nullable\n\n // Define composite primary key\n @@id([user_id, achievement_type_id], map: \"user_achievement_pkey\") // Added @@id\n // @@ignore // Removed @@ignore\n @@schema(\"identity\")\n}\n\nmodel user_group_xref {\n user_group_id Decimal @id(map: \"pk_user_group_xref\") @default(dbgenerated(\"nextval('sequence_user_group_seq'::regclass)\")) @db.Decimal(12, 0)\n login_id Decimal? @db.Decimal(12, 0)\n group_id Decimal? @db.Decimal(12, 0)\n create_user_id Decimal? @db.Decimal(12, 0)\n security_status_id Decimal? @db.Decimal(3, 0)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n security_user security_user? @relation(fields: [login_id], references: [login_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref1\")\n security_groups security_groups? @relation(fields: [group_id], references: [group_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref2\")\n security_status_lu security_status_lu? @relation(fields: [security_status_id], references: [security_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"usergroupxref_status_fk\")\n\n @@unique([login_id, group_id], map: \"user_grp_xref_i2\")\n @@schema(\"identity\")\n}\n\nmodel user_otp_email {\n id Int @id(map: \"user_otp_email_pk\") @default(autoincrement())\n user_id Decimal @db.Decimal(10, 0)\n mode Int @db.SmallInt\n otp String @db.VarChar(6)\n expire_at DateTime @db.Timestamp(6)\n resend Boolean @default(false)\n fail_count Int @default(0) @db.SmallInt\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@unique([user_id, mode])\n @@schema(\"identity\")\n}\n\nmodel user_social_login {\n social_user_id String? @db.VarChar(254)\n user_id Decimal @db.Decimal(10, 0)\n social_login_provider_id Decimal @db.Decimal(10, 0)\n social_user_name String @db.VarChar(100)\n social_email String? @db.VarChar(100)\n social_email_verified Boolean?\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @db.Timestamp(6)\n social_login_provider social_login_provider @relation(fields: [social_login_provider_id], references: [social_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_user_fk\")\n\n @@id([user_id, social_login_provider_id], map: \"user_social_prkey\")\n @@index([social_user_id, social_login_provider_id])\n @@schema(\"identity\")\n}\n\nmodel user_sso_login {\n user_id Decimal @db.Decimal(10, 0)\n sso_user_id String @db.VarChar(100)\n sso_user_name String? @db.VarChar(100)\n provider_id Decimal @db.Decimal(10, 0)\n email String? @db.VarChar(100)\n sso_login_provider sso_login_provider @relation(fields: [provider_id], references: [sso_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_user_fk\")\n\n @@id([user_id, provider_id], map: \"user_sso_prkey\") // Primary key\n @@index([sso_user_id, provider_id], map: \"idx_user_social_login_sso_user_id_provider_id\") // Index only, NOT unique\n @@schema(\"identity\")\n}\n\nmodel user_status {\n user_id Decimal @db.Decimal(10, 0)\n user_status_type_id Decimal @db.Decimal(3, 0)\n user_status_id Decimal? @db.Decimal(5, 0)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_user_fk\")\n user_status_lu user_status_lu? @relation(fields: [user_status_id], references: [user_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatuslu_fk\")\n user_status_type_lu user_status_type_lu @relation(fields: [user_status_type_id], references: [user_status_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatustype_fk\")\n\n @@id([user_id, user_status_type_id], map: \"userstatus_pk\")\n @@schema(\"identity\")\n}\n\nmodel user_status_lu {\n user_status_id Decimal @id(map: \"u113_26\") @db.Decimal(5, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\nmodel user_status_type_lu {\n user_status_type_id Decimal @id(map: \"userstatustypelu_pk\") @db.Decimal(3, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\n// Explicit definition for the user-email join table\nmodel user_email_xref {\n user_id Decimal @db.Decimal(10, 0)\n email_id Decimal @db.Decimal(10, 0)\n is_primary Boolean // Assuming boolean based on name, adjust if Decimal(1,0)\n status_id Decimal @db.Decimal(3, 0) // Assuming relates to email_status_lu\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_user_fk\") // Define relation\n email email @relation(fields: [email_id], references: [email_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_email_fk\") // Define relation\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id]) // Optional relation to status lookup\n\n @@id([user_id, email_id], map: \"user_email_xref_pkey\") // Define composite primary key\n @@index([email_id], map: \"user_email_xref_email_idx\")\n @@index([user_id, status_id])\n @@schema(\"identity\")\n}\n\n// -----------------------------------------\n// (Migrated from MySQL DDL)\n// -----------------------------------------\n\nmodel Client {\n id Int @id @default(autoincrement()) @map(\"id\")\n clientId String @unique @map(\"client_id\")\n name String\n redirectUri String? @map(\"redirect_uri\") @db.VarChar(8192)\n secret String?\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0) // Use Timestamp(0) if you need second precision like MySQL datetime\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n @@map(\"client\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel Role {\n id Int @id @default(autoincrement()) @map(\"id\")\n name String @unique @db.VarChar(45)\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n roleAssignments RoleAssignment[] // Relation field\n\n @@map(\"role\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel RoleAssignment {\n id Int @id @default(autoincrement()) @map(\"id\")\n roleId Int @map(\"role_id\")\n subjectId Int @map(\"subject_id\")\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n subjectType Int @default(1) @map(\"subject_type\")\n\n role Role @relation(fields: [roleId], references: [id], map: \"role_id\") // Relation field\n\n @@unique([roleId, subjectId, subjectType], map: \"role_subject_id_subject_type\")\n @@index([subjectId], map: \"subject_id_idx\")\n @@index([roleId], map: \"role_id_idx\")\n @@index([subjectId, subjectType])\n @@map(\"role_assignment\")\n @@schema(\"identity\")\n}\n", + "inlineSchemaHash": "00a34cea140eb65386c378bb3a6f18df674a5c703111f0621f0e67f3aedd647e", "copyEngine": true } config.dirname = '/' -config.runtimeDataModel = JSON.parse("{\"models\":{\"achievement_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_achievement\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_achievement\",\"nativeType\":null,\"relationName\":\"achievement_type_luTouser_achievement\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"country\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"country_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"country_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"40\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"participating\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"default_taxform_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"longitude\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"7\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"latitude\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"7\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"region\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"128\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_alpha2_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"2\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_alpha3_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"dice_connection\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"connection\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accepted\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"short_url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"con_created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"dice_connectionTouser\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_email_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"primary_ind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_status_lu\",\"nativeType\":null,\"relationName\":\"emailToemail_status_lu\",\"relationFromFields\":[\"status_id\"],\"relationToFields\":[\"status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_type_lu\",\"nativeType\":null,\"relationName\":\"emailToemail_type_lu\",\"relationFromFields\":[\"email_type_id\"],\"relationToFields\":[\"email_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"emailTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"UserToEmail\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailToemail_status_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"email_status_luTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailToemail_type_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"id_sequences\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"next_block_start\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"block_size\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"exhausted\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"invalid_handles\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"invalid_handle_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"invalid_handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"20\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_groups\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge_group_ind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_groupsTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"200\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_status_luTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_user\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"login_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"300\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_userTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"social_login_provider\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_social_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_social_login\",\"nativeType\":null,\"relationName\":\"social_login_providerTouser_social_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"sso_login_provider\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"sso_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"identify_email_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"identify_handle_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_sso_login\",\"nativeType\":null,\"relationName\":\"sso_login_providerTouser_sso_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_user_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"first_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_login\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activation_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"32\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"middle_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle_lower\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timezone_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_site_hit_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name_in_another_language\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"16\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"open_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"200\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reg_source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"20\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_medium\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_campaign\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"dice_connection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"dice_connection\",\"nativeType\":null,\"relationName\":\"dice_connectionTouser\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_2fa\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_2fa\",\"nativeType\":null,\"relationName\":\"userTouser_2fa\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_achievement\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_achievement\",\"nativeType\":null,\"relationName\":\"userTouser_achievement\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_otp_email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_otp_email\",\"nativeType\":null,\"relationName\":\"userTouser_otp_email\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_social_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_social_login\",\"nativeType\":null,\"relationName\":\"userTouser_social_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_sso_login\",\"nativeType\":null,\"relationName\":\"userTouser_sso_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"userTouser_status\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"userTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"emails\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"UserToEmail\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_2fa\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mfa_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"dice_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_2fa\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_achievement\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Date\",[]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"255\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"achievement_type_lu\",\"nativeType\":null,\"relationName\":\"achievement_type_luTouser_achievement\",\"relationFromFields\":[\"achievement_type_id\"],\"relationToFields\":[\"achievement_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_achievement\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"achievement_type_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\"},\"user_group_xref\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_user_group_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"login_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_user\",\"nativeType\":null,\"relationName\":\"security_userTouser_group_xref\",\"relationFromFields\":[\"login_id\"],\"relationToFields\":[\"login_id\"],\"relationOnDelete\":\"Cascade\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_groups\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_groups\",\"nativeType\":null,\"relationName\":\"security_groupsTouser_group_xref\",\"relationFromFields\":[\"group_id\"],\"relationToFields\":[\"group_id\"],\"relationOnDelete\":\"Cascade\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_status_lu\",\"nativeType\":null,\"relationName\":\"security_status_luTouser_group_xref\",\"relationFromFields\":[\"security_status_id\"],\"relationToFields\":[\"security_status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"login_id\",\"group_id\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"login_id\",\"group_id\"]}],\"isGenerated\":false},\"user_otp_email\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expire_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resend\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fail_count\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_otp_email\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"user_id\",\"mode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"user_id\",\"mode\"]}],\"isGenerated\":false},\"user_social_login\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"social_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_user_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_email_verified\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_login_provider\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"social_login_provider\",\"nativeType\":null,\"relationName\":\"social_login_providerTouser_social_login\",\"relationFromFields\":[\"social_login_provider_id\"],\"relationToFields\":[\"social_login_provider_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_social_login\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"social_login_provider_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_sso_login\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_user_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_login_provider\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"sso_login_provider\",\"nativeType\":null,\"relationName\":\"sso_login_providerTouser_sso_login\",\"relationFromFields\":[\"provider_id\"],\"relationToFields\":[\"sso_login_provider_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_sso_login\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"provider_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_status\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status_lu\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_lu\",\"relationFromFields\":[\"user_status_id\"],\"relationToFields\":[\"user_status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status_type_lu\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_type_lu\",\"relationFromFields\":[\"user_status_type_id\"],\"relationToFields\":[\"user_status_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"user_status_type_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_type_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_email_xref\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"is_primary\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_email_xref\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailTouser_email_xref\",\"relationFromFields\":[\"email_id\"],\"relationToFields\":[\"email_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_status_lu\",\"nativeType\":null,\"relationName\":\"email_status_luTouser_email_xref\",\"relationFromFields\":[\"status_id\"],\"relationToFields\":[\"status_id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"email_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Client\":{\"dbName\":\"client\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientId\",\"dbName\":\"client_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"redirectUri\",\"dbName\":\"redirect_uri\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"8192\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"secret\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Role\":{\"dbName\":\"role\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"45\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleAssignments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"RoleAssignment\",\"nativeType\":null,\"relationName\":\"RoleToRoleAssignment\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"RoleAssignment\":{\"dbName\":\"role_assignment\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"dbName\":\"role_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subjectId\",\"dbName\":\"subject_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subjectType\",\"dbName\":\"subject_type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Role\",\"nativeType\":null,\"relationName\":\"RoleToRoleAssignment\",\"relationFromFields\":[\"roleId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"roleId\",\"subjectId\",\"subjectType\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"roleId\",\"subjectId\",\"subjectType\"]}],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"achievement_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_achievement\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_achievement\",\"nativeType\":null,\"relationName\":\"achievement_type_luTouser_achievement\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"country\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"country_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"country_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"40\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"participating\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"default_taxform_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"longitude\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"7\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"latitude\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"7\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"region\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"128\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_alpha2_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"2\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_alpha3_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"dice_connection\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"connection\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accepted\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"short_url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"con_created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"dice_connectionTouser\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_email_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"primary_ind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_status_lu\",\"nativeType\":null,\"relationName\":\"emailToemail_status_lu\",\"relationFromFields\":[\"status_id\"],\"relationToFields\":[\"status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_type_lu\",\"nativeType\":null,\"relationName\":\"emailToemail_type_lu\",\"relationFromFields\":[\"email_type_id\"],\"relationToFields\":[\"email_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"emailTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"UserToEmail\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailToemail_status_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"email_status_luTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailToemail_type_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"id_sequences\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"next_block_start\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"block_size\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"exhausted\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"invalid_handles\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"invalid_handle_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"invalid_handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"20\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"locked_handles\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"locked_handle_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"locked_handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"locked_handle_lower\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_groups\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge_group_ind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_groupsTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"200\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_status_luTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_user\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"login_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"300\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_userTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"social_login_provider\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_social_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_social_login\",\"nativeType\":null,\"relationName\":\"social_login_providerTouser_social_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"sso_login_provider\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"sso_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"identify_email_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"identify_handle_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_sso_login\",\"nativeType\":null,\"relationName\":\"sso_login_providerTouser_sso_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_user_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"first_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_login\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activation_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"32\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"middle_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle_lower\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timezone_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_site_hit_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name_in_another_language\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"16\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"open_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"200\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reg_source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"20\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_medium\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_campaign\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"dice_connection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"dice_connection\",\"nativeType\":null,\"relationName\":\"dice_connectionTouser\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_2fa\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_2fa\",\"nativeType\":null,\"relationName\":\"userTouser_2fa\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_achievement\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_achievement\",\"nativeType\":null,\"relationName\":\"userTouser_achievement\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_otp_email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_otp_email\",\"nativeType\":null,\"relationName\":\"userTouser_otp_email\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_social_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_social_login\",\"nativeType\":null,\"relationName\":\"userTouser_social_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_sso_login\",\"nativeType\":null,\"relationName\":\"userTouser_sso_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"userTouser_status\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"userTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"emails\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"UserToEmail\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_2fa\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mfa_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"dice_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_2fa\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_achievement\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Date\",[]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"255\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"achievement_type_lu\",\"nativeType\":null,\"relationName\":\"achievement_type_luTouser_achievement\",\"relationFromFields\":[\"achievement_type_id\"],\"relationToFields\":[\"achievement_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_achievement\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"achievement_type_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\"},\"user_group_xref\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_user_group_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"login_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_user\",\"nativeType\":null,\"relationName\":\"security_userTouser_group_xref\",\"relationFromFields\":[\"login_id\"],\"relationToFields\":[\"login_id\"],\"relationOnDelete\":\"Cascade\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_groups\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_groups\",\"nativeType\":null,\"relationName\":\"security_groupsTouser_group_xref\",\"relationFromFields\":[\"group_id\"],\"relationToFields\":[\"group_id\"],\"relationOnDelete\":\"Cascade\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_status_lu\",\"nativeType\":null,\"relationName\":\"security_status_luTouser_group_xref\",\"relationFromFields\":[\"security_status_id\"],\"relationToFields\":[\"security_status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"login_id\",\"group_id\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"login_id\",\"group_id\"]}],\"isGenerated\":false},\"user_otp_email\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expire_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resend\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fail_count\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_otp_email\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"user_id\",\"mode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"user_id\",\"mode\"]}],\"isGenerated\":false},\"user_social_login\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"social_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_user_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_email_verified\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_login_provider\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"social_login_provider\",\"nativeType\":null,\"relationName\":\"social_login_providerTouser_social_login\",\"relationFromFields\":[\"social_login_provider_id\"],\"relationToFields\":[\"social_login_provider_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_social_login\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"social_login_provider_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_sso_login\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_user_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_login_provider\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"sso_login_provider\",\"nativeType\":null,\"relationName\":\"sso_login_providerTouser_sso_login\",\"relationFromFields\":[\"provider_id\"],\"relationToFields\":[\"sso_login_provider_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_sso_login\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"provider_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_status\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status_lu\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_lu\",\"relationFromFields\":[\"user_status_id\"],\"relationToFields\":[\"user_status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status_type_lu\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_type_lu\",\"relationFromFields\":[\"user_status_type_id\"],\"relationToFields\":[\"user_status_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"user_status_type_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_type_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_email_xref\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"is_primary\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_email_xref\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailTouser_email_xref\",\"relationFromFields\":[\"email_id\"],\"relationToFields\":[\"email_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_status_lu\",\"nativeType\":null,\"relationName\":\"email_status_luTouser_email_xref\",\"relationFromFields\":[\"status_id\"],\"relationToFields\":[\"status_id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"email_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Client\":{\"dbName\":\"client\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientId\",\"dbName\":\"client_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"redirectUri\",\"dbName\":\"redirect_uri\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"8192\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"secret\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Role\":{\"dbName\":\"role\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"45\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleAssignments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"RoleAssignment\",\"nativeType\":null,\"relationName\":\"RoleToRoleAssignment\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"RoleAssignment\":{\"dbName\":\"role_assignment\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"dbName\":\"role_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subjectId\",\"dbName\":\"subject_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subjectType\",\"dbName\":\"subject_type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Role\",\"nativeType\":null,\"relationName\":\"RoleToRoleAssignment\",\"relationFromFields\":[\"roleId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"roleId\",\"subjectId\",\"subjectType\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"roleId\",\"subjectId\",\"subjectType\"]}],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined config.compilerWasm = undefined diff --git a/packages/identity-prisma-client/index-browser.js b/packages/identity-prisma-client/index-browser.js index 7344388..014ccd7 100644 --- a/packages/identity-prisma-client/index-browser.js +++ b/packages/identity-prisma-client/index-browser.js @@ -187,6 +187,13 @@ exports.Prisma.Invalid_handlesScalarFieldEnum = { invalid_handle: 'invalid_handle' }; +exports.Prisma.Locked_handlesScalarFieldEnum = { + locked_handle_id: 'locked_handle_id', + locked_handle: 'locked_handle', + locked_handle_lower: 'locked_handle_lower', + create_date: 'create_date' +}; + exports.Prisma.Security_groupsScalarFieldEnum = { group_id: 'group_id', description: 'description', @@ -382,6 +389,7 @@ exports.Prisma.ModelName = { email_type_lu: 'email_type_lu', id_sequences: 'id_sequences', invalid_handles: 'invalid_handles', + locked_handles: 'locked_handles', security_groups: 'security_groups', security_status_lu: 'security_status_lu', security_user: 'security_user', diff --git a/packages/identity-prisma-client/index.d.ts b/packages/identity-prisma-client/index.d.ts index 7db963c..a542e82 100644 --- a/packages/identity-prisma-client/index.d.ts +++ b/packages/identity-prisma-client/index.d.ts @@ -53,6 +53,11 @@ export type id_sequences = $Result.DefaultSelection * */ export type invalid_handles = $Result.DefaultSelection +/** + * Model locked_handles + * + */ +export type locked_handles = $Result.DefaultSelection /** * Model security_groups * @@ -347,6 +352,16 @@ export class PrismaClient< */ get invalid_handles(): Prisma.invalid_handlesDelegate; + /** + * `prisma.locked_handles`: Exposes CRUD operations for the **locked_handles** model. + * Example usage: + * ```ts + * // Fetch zero or more Locked_handles + * const locked_handles = await prisma.locked_handles.findMany() + * ``` + */ + get locked_handles(): Prisma.locked_handlesDelegate; + /** * `prisma.security_groups`: Exposes CRUD operations for the **security_groups** model. * Example usage: @@ -985,6 +1000,7 @@ export namespace Prisma { email_type_lu: 'email_type_lu', id_sequences: 'id_sequences', invalid_handles: 'invalid_handles', + locked_handles: 'locked_handles', security_groups: 'security_groups', security_status_lu: 'security_status_lu', security_user: 'security_user', @@ -1022,7 +1038,7 @@ export namespace Prisma { omit: GlobalOmitOptions } meta: { - modelProps: "achievement_type_lu" | "country" | "dice_connection" | "email" | "email_status_lu" | "email_type_lu" | "id_sequences" | "invalid_handles" | "security_groups" | "security_status_lu" | "security_user" | "social_login_provider" | "sso_login_provider" | "user" | "user_2fa" | "user_achievement" | "user_group_xref" | "user_otp_email" | "user_social_login" | "user_sso_login" | "user_status" | "user_status_lu" | "user_status_type_lu" | "user_email_xref" | "client" | "role" | "roleAssignment" + modelProps: "achievement_type_lu" | "country" | "dice_connection" | "email" | "email_status_lu" | "email_type_lu" | "id_sequences" | "invalid_handles" | "locked_handles" | "security_groups" | "security_status_lu" | "security_user" | "social_login_provider" | "sso_login_provider" | "user" | "user_2fa" | "user_achievement" | "user_group_xref" | "user_otp_email" | "user_social_login" | "user_sso_login" | "user_status" | "user_status_lu" | "user_status_type_lu" | "user_email_xref" | "client" | "role" | "roleAssignment" txIsolationLevel: Prisma.TransactionIsolationLevel } model: { @@ -1618,6 +1634,80 @@ export namespace Prisma { } } } + locked_handles: { + payload: Prisma.$locked_handlesPayload + fields: Prisma.locked_handlesFieldRefs + operations: { + findUnique: { + args: Prisma.locked_handlesFindUniqueArgs + result: $Utils.PayloadToResult | null + } + findUniqueOrThrow: { + args: Prisma.locked_handlesFindUniqueOrThrowArgs + result: $Utils.PayloadToResult + } + findFirst: { + args: Prisma.locked_handlesFindFirstArgs + result: $Utils.PayloadToResult | null + } + findFirstOrThrow: { + args: Prisma.locked_handlesFindFirstOrThrowArgs + result: $Utils.PayloadToResult + } + findMany: { + args: Prisma.locked_handlesFindManyArgs + result: $Utils.PayloadToResult[] + } + create: { + args: Prisma.locked_handlesCreateArgs + result: $Utils.PayloadToResult + } + createMany: { + args: Prisma.locked_handlesCreateManyArgs + result: BatchPayload + } + createManyAndReturn: { + args: Prisma.locked_handlesCreateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + delete: { + args: Prisma.locked_handlesDeleteArgs + result: $Utils.PayloadToResult + } + update: { + args: Prisma.locked_handlesUpdateArgs + result: $Utils.PayloadToResult + } + deleteMany: { + args: Prisma.locked_handlesDeleteManyArgs + result: BatchPayload + } + updateMany: { + args: Prisma.locked_handlesUpdateManyArgs + result: BatchPayload + } + updateManyAndReturn: { + args: Prisma.locked_handlesUpdateManyAndReturnArgs + result: $Utils.PayloadToResult[] + } + upsert: { + args: Prisma.locked_handlesUpsertArgs + result: $Utils.PayloadToResult + } + aggregate: { + args: Prisma.Locked_handlesAggregateArgs + result: $Utils.Optional + } + groupBy: { + args: Prisma.locked_handlesGroupByArgs + result: $Utils.Optional[] + } + count: { + args: Prisma.locked_handlesCountArgs + result: $Utils.Optional | number + } + } + } security_groups: { payload: Prisma.$security_groupsPayload fields: Prisma.security_groupsFieldRefs @@ -3128,6 +3218,7 @@ export namespace Prisma { email_type_lu?: email_type_luOmit id_sequences?: id_sequencesOmit invalid_handles?: invalid_handlesOmit + locked_handles?: locked_handlesOmit security_groups?: security_groupsOmit security_status_lu?: security_status_luOmit security_user?: security_userOmit @@ -12473,377 +12564,359 @@ export namespace Prisma { /** - * Model security_groups + * Model locked_handles */ - export type AggregateSecurity_groups = { - _count: Security_groupsCountAggregateOutputType | null - _avg: Security_groupsAvgAggregateOutputType | null - _sum: Security_groupsSumAggregateOutputType | null - _min: Security_groupsMinAggregateOutputType | null - _max: Security_groupsMaxAggregateOutputType | null + export type AggregateLocked_handles = { + _count: Locked_handlesCountAggregateOutputType | null + _avg: Locked_handlesAvgAggregateOutputType | null + _sum: Locked_handlesSumAggregateOutputType | null + _min: Locked_handlesMinAggregateOutputType | null + _max: Locked_handlesMaxAggregateOutputType | null } - export type Security_groupsAvgAggregateOutputType = { - group_id: Decimal | null - challenge_group_ind: number | null - create_user_id: Decimal | null + export type Locked_handlesAvgAggregateOutputType = { + locked_handle_id: number | null } - export type Security_groupsSumAggregateOutputType = { - group_id: Decimal | null - challenge_group_ind: number | null - create_user_id: Decimal | null + export type Locked_handlesSumAggregateOutputType = { + locked_handle_id: number | null } - export type Security_groupsMinAggregateOutputType = { - group_id: Decimal | null - description: string | null - challenge_group_ind: number | null - create_user_id: Decimal | null + export type Locked_handlesMinAggregateOutputType = { + locked_handle_id: number | null + locked_handle: string | null + locked_handle_lower: string | null + create_date: Date | null } - export type Security_groupsMaxAggregateOutputType = { - group_id: Decimal | null - description: string | null - challenge_group_ind: number | null - create_user_id: Decimal | null + export type Locked_handlesMaxAggregateOutputType = { + locked_handle_id: number | null + locked_handle: string | null + locked_handle_lower: string | null + create_date: Date | null } - export type Security_groupsCountAggregateOutputType = { - group_id: number - description: number - challenge_group_ind: number - create_user_id: number + export type Locked_handlesCountAggregateOutputType = { + locked_handle_id: number + locked_handle: number + locked_handle_lower: number + create_date: number _all: number } - export type Security_groupsAvgAggregateInputType = { - group_id?: true - challenge_group_ind?: true - create_user_id?: true + export type Locked_handlesAvgAggregateInputType = { + locked_handle_id?: true } - export type Security_groupsSumAggregateInputType = { - group_id?: true - challenge_group_ind?: true - create_user_id?: true + export type Locked_handlesSumAggregateInputType = { + locked_handle_id?: true } - export type Security_groupsMinAggregateInputType = { - group_id?: true - description?: true - challenge_group_ind?: true - create_user_id?: true + export type Locked_handlesMinAggregateInputType = { + locked_handle_id?: true + locked_handle?: true + locked_handle_lower?: true + create_date?: true } - export type Security_groupsMaxAggregateInputType = { - group_id?: true - description?: true - challenge_group_ind?: true - create_user_id?: true + export type Locked_handlesMaxAggregateInputType = { + locked_handle_id?: true + locked_handle?: true + locked_handle_lower?: true + create_date?: true } - export type Security_groupsCountAggregateInputType = { - group_id?: true - description?: true - challenge_group_ind?: true - create_user_id?: true + export type Locked_handlesCountAggregateInputType = { + locked_handle_id?: true + locked_handle?: true + locked_handle_lower?: true + create_date?: true _all?: true } - export type Security_groupsAggregateArgs = { + export type Locked_handlesAggregateArgs = { /** - * Filter which security_groups to aggregate. + * Filter which locked_handles to aggregate. */ - where?: security_groupsWhereInput + where?: locked_handlesWhereInput /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} * - * Determine the order of security_groups to fetch. + * Determine the order of locked_handles to fetch. */ - orderBy?: security_groupsOrderByWithRelationInput | security_groupsOrderByWithRelationInput[] + orderBy?: locked_handlesOrderByWithRelationInput | locked_handlesOrderByWithRelationInput[] /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} * * Sets the start position */ - cursor?: security_groupsWhereUniqueInput + cursor?: locked_handlesWhereUniqueInput /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} * - * Take `±n` security_groups from the position of the cursor. + * Take `±n` locked_handles from the position of the cursor. */ take?: number /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} * - * Skip the first `n` security_groups. + * Skip the first `n` locked_handles. */ skip?: number /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} * - * Count returned security_groups + * Count returned locked_handles **/ - _count?: true | Security_groupsCountAggregateInputType + _count?: true | Locked_handlesCountAggregateInputType /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} * * Select which fields to average **/ - _avg?: Security_groupsAvgAggregateInputType + _avg?: Locked_handlesAvgAggregateInputType /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} * * Select which fields to sum **/ - _sum?: Security_groupsSumAggregateInputType + _sum?: Locked_handlesSumAggregateInputType /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} * * Select which fields to find the minimum value **/ - _min?: Security_groupsMinAggregateInputType + _min?: Locked_handlesMinAggregateInputType /** * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} * * Select which fields to find the maximum value **/ - _max?: Security_groupsMaxAggregateInputType + _max?: Locked_handlesMaxAggregateInputType } - export type GetSecurity_groupsAggregateType = { - [P in keyof T & keyof AggregateSecurity_groups]: P extends '_count' | 'count' + export type GetLocked_handlesAggregateType = { + [P in keyof T & keyof AggregateLocked_handles]: P extends '_count' | 'count' ? T[P] extends true ? number - : GetScalarType - : GetScalarType + : GetScalarType + : GetScalarType } - export type security_groupsGroupByArgs = { - where?: security_groupsWhereInput - orderBy?: security_groupsOrderByWithAggregationInput | security_groupsOrderByWithAggregationInput[] - by: Security_groupsScalarFieldEnum[] | Security_groupsScalarFieldEnum - having?: security_groupsScalarWhereWithAggregatesInput + export type locked_handlesGroupByArgs = { + where?: locked_handlesWhereInput + orderBy?: locked_handlesOrderByWithAggregationInput | locked_handlesOrderByWithAggregationInput[] + by: Locked_handlesScalarFieldEnum[] | Locked_handlesScalarFieldEnum + having?: locked_handlesScalarWhereWithAggregatesInput take?: number skip?: number - _count?: Security_groupsCountAggregateInputType | true - _avg?: Security_groupsAvgAggregateInputType - _sum?: Security_groupsSumAggregateInputType - _min?: Security_groupsMinAggregateInputType - _max?: Security_groupsMaxAggregateInputType + _count?: Locked_handlesCountAggregateInputType | true + _avg?: Locked_handlesAvgAggregateInputType + _sum?: Locked_handlesSumAggregateInputType + _min?: Locked_handlesMinAggregateInputType + _max?: Locked_handlesMaxAggregateInputType } - export type Security_groupsGroupByOutputType = { - group_id: Decimal - description: string - challenge_group_ind: number - create_user_id: Decimal | null - _count: Security_groupsCountAggregateOutputType | null - _avg: Security_groupsAvgAggregateOutputType | null - _sum: Security_groupsSumAggregateOutputType | null - _min: Security_groupsMinAggregateOutputType | null - _max: Security_groupsMaxAggregateOutputType | null + export type Locked_handlesGroupByOutputType = { + locked_handle_id: number + locked_handle: string + locked_handle_lower: string + create_date: Date | null + _count: Locked_handlesCountAggregateOutputType | null + _avg: Locked_handlesAvgAggregateOutputType | null + _sum: Locked_handlesSumAggregateOutputType | null + _min: Locked_handlesMinAggregateOutputType | null + _max: Locked_handlesMaxAggregateOutputType | null } - type GetSecurity_groupsGroupByPayload = Prisma.PrismaPromise< + type GetLocked_handlesGroupByPayload = Prisma.PrismaPromise< Array< - PickEnumerable & + PickEnumerable & { - [P in ((keyof T) & (keyof Security_groupsGroupByOutputType))]: P extends '_count' + [P in ((keyof T) & (keyof Locked_handlesGroupByOutputType))]: P extends '_count' ? T[P] extends boolean ? number - : GetScalarType - : GetScalarType + : GetScalarType + : GetScalarType } > > - export type security_groupsSelect = $Extensions.GetSelect<{ - group_id?: boolean - description?: boolean - challenge_group_ind?: boolean - create_user_id?: boolean - user_group_xref?: boolean | security_groups$user_group_xrefArgs - _count?: boolean | Security_groupsCountOutputTypeDefaultArgs - }, ExtArgs["result"]["security_groups"]> + export type locked_handlesSelect = $Extensions.GetSelect<{ + locked_handle_id?: boolean + locked_handle?: boolean + locked_handle_lower?: boolean + create_date?: boolean + }, ExtArgs["result"]["locked_handles"]> - export type security_groupsSelectCreateManyAndReturn = $Extensions.GetSelect<{ - group_id?: boolean - description?: boolean - challenge_group_ind?: boolean - create_user_id?: boolean - }, ExtArgs["result"]["security_groups"]> + export type locked_handlesSelectCreateManyAndReturn = $Extensions.GetSelect<{ + locked_handle_id?: boolean + locked_handle?: boolean + locked_handle_lower?: boolean + create_date?: boolean + }, ExtArgs["result"]["locked_handles"]> - export type security_groupsSelectUpdateManyAndReturn = $Extensions.GetSelect<{ - group_id?: boolean - description?: boolean - challenge_group_ind?: boolean - create_user_id?: boolean - }, ExtArgs["result"]["security_groups"]> + export type locked_handlesSelectUpdateManyAndReturn = $Extensions.GetSelect<{ + locked_handle_id?: boolean + locked_handle?: boolean + locked_handle_lower?: boolean + create_date?: boolean + }, ExtArgs["result"]["locked_handles"]> - export type security_groupsSelectScalar = { - group_id?: boolean - description?: boolean - challenge_group_ind?: boolean - create_user_id?: boolean + export type locked_handlesSelectScalar = { + locked_handle_id?: boolean + locked_handle?: boolean + locked_handle_lower?: boolean + create_date?: boolean } - export type security_groupsOmit = $Extensions.GetOmit<"group_id" | "description" | "challenge_group_ind" | "create_user_id", ExtArgs["result"]["security_groups"]> - export type security_groupsInclude = { - user_group_xref?: boolean | security_groups$user_group_xrefArgs - _count?: boolean | Security_groupsCountOutputTypeDefaultArgs - } - export type security_groupsIncludeCreateManyAndReturn = {} - export type security_groupsIncludeUpdateManyAndReturn = {} + export type locked_handlesOmit = $Extensions.GetOmit<"locked_handle_id" | "locked_handle" | "locked_handle_lower" | "create_date", ExtArgs["result"]["locked_handles"]> - export type $security_groupsPayload = { - name: "security_groups" - objects: { - user_group_xref: Prisma.$user_group_xrefPayload[] - } + export type $locked_handlesPayload = { + name: "locked_handles" + objects: {} scalars: $Extensions.GetPayloadResult<{ - group_id: Prisma.Decimal - description: string - challenge_group_ind: number - create_user_id: Prisma.Decimal | null - }, ExtArgs["result"]["security_groups"]> + locked_handle_id: number + locked_handle: string + locked_handle_lower: string + create_date: Date | null + }, ExtArgs["result"]["locked_handles"]> composites: {} } - type security_groupsGetPayload = $Result.GetResult + type locked_handlesGetPayload = $Result.GetResult - type security_groupsCountArgs = - Omit & { - select?: Security_groupsCountAggregateInputType | true + type locked_handlesCountArgs = + Omit & { + select?: Locked_handlesCountAggregateInputType | true } - export interface security_groupsDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['security_groups'], meta: { name: 'security_groups' } } + export interface locked_handlesDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['locked_handles'], meta: { name: 'locked_handles' } } /** - * Find zero or one Security_groups that matches the filter. - * @param {security_groupsFindUniqueArgs} args - Arguments to find a Security_groups + * Find zero or one Locked_handles that matches the filter. + * @param {locked_handlesFindUniqueArgs} args - Arguments to find a Locked_handles * @example - * // Get one Security_groups - * const security_groups = await prisma.security_groups.findUnique({ + * // Get one Locked_handles + * const locked_handles = await prisma.locked_handles.findUnique({ * where: { * // ... provide filter here * } * }) */ - findUnique(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + findUnique(args: SelectSubset>): Prisma__locked_handlesClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> /** - * Find one Security_groups that matches the filter or throw an error with `error.code='P2025'` + * Find one Locked_handles that matches the filter or throw an error with `error.code='P2025'` * if no matches were found. - * @param {security_groupsFindUniqueOrThrowArgs} args - Arguments to find a Security_groups + * @param {locked_handlesFindUniqueOrThrowArgs} args - Arguments to find a Locked_handles * @example - * // Get one Security_groups - * const security_groups = await prisma.security_groups.findUniqueOrThrow({ + * // Get one Locked_handles + * const locked_handles = await prisma.locked_handles.findUniqueOrThrow({ * where: { * // ... provide filter here * } * }) */ - findUniqueOrThrow(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + findUniqueOrThrow(args: SelectSubset>): Prisma__locked_handlesClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> /** - * Find the first Security_groups that matches the filter. + * Find the first Locked_handles that matches the filter. * Note, that providing `undefined` is treated as the value not being there. * Read more here: https://pris.ly/d/null-undefined - * @param {security_groupsFindFirstArgs} args - Arguments to find a Security_groups + * @param {locked_handlesFindFirstArgs} args - Arguments to find a Locked_handles * @example - * // Get one Security_groups - * const security_groups = await prisma.security_groups.findFirst({ + * // Get one Locked_handles + * const locked_handles = await prisma.locked_handles.findFirst({ * where: { * // ... provide filter here * } * }) */ - findFirst(args?: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + findFirst(args?: SelectSubset>): Prisma__locked_handlesClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> /** - * Find the first Security_groups that matches the filter or + * Find the first Locked_handles that matches the filter or * throw `PrismaKnownClientError` with `P2025` code if no matches were found. * Note, that providing `undefined` is treated as the value not being there. * Read more here: https://pris.ly/d/null-undefined - * @param {security_groupsFindFirstOrThrowArgs} args - Arguments to find a Security_groups + * @param {locked_handlesFindFirstOrThrowArgs} args - Arguments to find a Locked_handles * @example - * // Get one Security_groups - * const security_groups = await prisma.security_groups.findFirstOrThrow({ + * // Get one Locked_handles + * const locked_handles = await prisma.locked_handles.findFirstOrThrow({ * where: { * // ... provide filter here * } * }) */ - findFirstOrThrow(args?: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + findFirstOrThrow(args?: SelectSubset>): Prisma__locked_handlesClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> /** - * Find zero or more Security_groups that matches the filter. + * Find zero or more Locked_handles that matches the filter. * Note, that providing `undefined` is treated as the value not being there. * Read more here: https://pris.ly/d/null-undefined - * @param {security_groupsFindManyArgs} args - Arguments to filter and select certain fields only. + * @param {locked_handlesFindManyArgs} args - Arguments to filter and select certain fields only. * @example - * // Get all Security_groups - * const security_groups = await prisma.security_groups.findMany() + * // Get all Locked_handles + * const locked_handles = await prisma.locked_handles.findMany() * - * // Get first 10 Security_groups - * const security_groups = await prisma.security_groups.findMany({ take: 10 }) + * // Get first 10 Locked_handles + * const locked_handles = await prisma.locked_handles.findMany({ take: 10 }) * - * // Only select the `group_id` - * const security_groupsWithGroup_idOnly = await prisma.security_groups.findMany({ select: { group_id: true } }) + * // Only select the `locked_handle_id` + * const locked_handlesWithLocked_handle_idOnly = await prisma.locked_handles.findMany({ select: { locked_handle_id: true } }) * */ - findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> /** - * Create a Security_groups. - * @param {security_groupsCreateArgs} args - Arguments to create a Security_groups. + * Create a Locked_handles. + * @param {locked_handlesCreateArgs} args - Arguments to create a Locked_handles. * @example - * // Create one Security_groups - * const Security_groups = await prisma.security_groups.create({ + * // Create one Locked_handles + * const Locked_handles = await prisma.locked_handles.create({ * data: { - * // ... data to create a Security_groups + * // ... data to create a Locked_handles * } * }) * */ - create(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + create(args: SelectSubset>): Prisma__locked_handlesClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> /** - * Create many Security_groups. - * @param {security_groupsCreateManyArgs} args - Arguments to create many Security_groups. + * Create many Locked_handles. + * @param {locked_handlesCreateManyArgs} args - Arguments to create many Locked_handles. * @example - * // Create many Security_groups - * const security_groups = await prisma.security_groups.createMany({ + * // Create many Locked_handles + * const locked_handles = await prisma.locked_handles.createMany({ * data: [ * // ... provide data here * ] * }) * */ - createMany(args?: SelectSubset>): Prisma.PrismaPromise + createMany(args?: SelectSubset>): Prisma.PrismaPromise /** - * Create many Security_groups and returns the data saved in the database. - * @param {security_groupsCreateManyAndReturnArgs} args - Arguments to create many Security_groups. + * Create many Locked_handles and returns the data saved in the database. + * @param {locked_handlesCreateManyAndReturnArgs} args - Arguments to create many Locked_handles. * @example - * // Create many Security_groups - * const security_groups = await prisma.security_groups.createManyAndReturn({ + * // Create many Locked_handles + * const locked_handles = await prisma.locked_handles.createManyAndReturn({ * data: [ * // ... provide data here * ] * }) * - * // Create many Security_groups and only return the `group_id` - * const security_groupsWithGroup_idOnly = await prisma.security_groups.createManyAndReturn({ - * select: { group_id: true }, + * // Create many Locked_handles and only return the `locked_handle_id` + * const locked_handlesWithLocked_handle_idOnly = await prisma.locked_handles.createManyAndReturn({ + * select: { locked_handle_id: true }, * data: [ * // ... provide data here * ] @@ -12852,28 +12925,28 @@ export namespace Prisma { * Read more here: https://pris.ly/d/null-undefined * */ - createManyAndReturn(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "createManyAndReturn", GlobalOmitOptions>> + createManyAndReturn(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "createManyAndReturn", GlobalOmitOptions>> /** - * Delete a Security_groups. - * @param {security_groupsDeleteArgs} args - Arguments to delete one Security_groups. + * Delete a Locked_handles. + * @param {locked_handlesDeleteArgs} args - Arguments to delete one Locked_handles. * @example - * // Delete one Security_groups - * const Security_groups = await prisma.security_groups.delete({ + * // Delete one Locked_handles + * const Locked_handles = await prisma.locked_handles.delete({ * where: { - * // ... filter to delete one Security_groups + * // ... filter to delete one Locked_handles * } * }) * */ - delete(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + delete(args: SelectSubset>): Prisma__locked_handlesClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> /** - * Update one Security_groups. - * @param {security_groupsUpdateArgs} args - Arguments to update one Security_groups. + * Update one Locked_handles. + * @param {locked_handlesUpdateArgs} args - Arguments to update one Locked_handles. * @example - * // Update one Security_groups - * const security_groups = await prisma.security_groups.update({ + * // Update one Locked_handles + * const locked_handles = await prisma.locked_handles.update({ * where: { * // ... provide filter here * }, @@ -12883,30 +12956,30 @@ export namespace Prisma { * }) * */ - update(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + update(args: SelectSubset>): Prisma__locked_handlesClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> /** - * Delete zero or more Security_groups. - * @param {security_groupsDeleteManyArgs} args - Arguments to filter Security_groups to delete. + * Delete zero or more Locked_handles. + * @param {locked_handlesDeleteManyArgs} args - Arguments to filter Locked_handles to delete. * @example - * // Delete a few Security_groups - * const { count } = await prisma.security_groups.deleteMany({ + * // Delete a few Locked_handles + * const { count } = await prisma.locked_handles.deleteMany({ * where: { * // ... provide filter here * } * }) * */ - deleteMany(args?: SelectSubset>): Prisma.PrismaPromise + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise /** - * Update zero or more Security_groups. + * Update zero or more Locked_handles. * Note, that providing `undefined` is treated as the value not being there. * Read more here: https://pris.ly/d/null-undefined - * @param {security_groupsUpdateManyArgs} args - Arguments to update one or more rows. + * @param {locked_handlesUpdateManyArgs} args - Arguments to update one or more rows. * @example - * // Update many Security_groups - * const security_groups = await prisma.security_groups.updateMany({ + * // Update many Locked_handles + * const locked_handles = await prisma.locked_handles.updateMany({ * where: { * // ... provide filter here * }, @@ -12916,14 +12989,14 @@ export namespace Prisma { * }) * */ - updateMany(args: SelectSubset>): Prisma.PrismaPromise + updateMany(args: SelectSubset>): Prisma.PrismaPromise /** - * Update zero or more Security_groups and returns the data updated in the database. - * @param {security_groupsUpdateManyAndReturnArgs} args - Arguments to update many Security_groups. + * Update zero or more Locked_handles and returns the data updated in the database. + * @param {locked_handlesUpdateManyAndReturnArgs} args - Arguments to update many Locked_handles. * @example - * // Update many Security_groups - * const security_groups = await prisma.security_groups.updateManyAndReturn({ + * // Update many Locked_handles + * const locked_handles = await prisma.locked_handles.updateManyAndReturn({ * where: { * // ... provide filter here * }, @@ -12932,9 +13005,9 @@ export namespace Prisma { * ] * }) * - * // Update zero or more Security_groups and only return the `group_id` - * const security_groupsWithGroup_idOnly = await prisma.security_groups.updateManyAndReturn({ - * select: { group_id: true }, + * // Update zero or more Locked_handles and only return the `locked_handle_id` + * const locked_handlesWithLocked_handle_idOnly = await prisma.locked_handles.updateManyAndReturn({ + * select: { locked_handle_id: true }, * where: { * // ... provide filter here * }, @@ -12946,56 +13019,56 @@ export namespace Prisma { * Read more here: https://pris.ly/d/null-undefined * */ - updateManyAndReturn(args: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "updateManyAndReturn", GlobalOmitOptions>> + updateManyAndReturn(args: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "updateManyAndReturn", GlobalOmitOptions>> /** - * Create or update one Security_groups. - * @param {security_groupsUpsertArgs} args - Arguments to update or create a Security_groups. + * Create or update one Locked_handles. + * @param {locked_handlesUpsertArgs} args - Arguments to update or create a Locked_handles. * @example - * // Update or create a Security_groups - * const security_groups = await prisma.security_groups.upsert({ + * // Update or create a Locked_handles + * const locked_handles = await prisma.locked_handles.upsert({ * create: { - * // ... data to create a Security_groups + * // ... data to create a Locked_handles * }, * update: { * // ... in case it already exists, update * }, * where: { - * // ... the filter for the Security_groups we want to update + * // ... the filter for the Locked_handles we want to update * } * }) */ - upsert(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + upsert(args: SelectSubset>): Prisma__locked_handlesClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> /** - * Count the number of Security_groups. + * Count the number of Locked_handles. * Note, that providing `undefined` is treated as the value not being there. * Read more here: https://pris.ly/d/null-undefined - * @param {security_groupsCountArgs} args - Arguments to filter Security_groups to count. + * @param {locked_handlesCountArgs} args - Arguments to filter Locked_handles to count. * @example - * // Count the number of Security_groups - * const count = await prisma.security_groups.count({ + * // Count the number of Locked_handles + * const count = await prisma.locked_handles.count({ * where: { - * // ... the filter for the Security_groups we want to count + * // ... the filter for the Locked_handles we want to count * } * }) **/ - count( - args?: Subset, + count( + args?: Subset, ): Prisma.PrismaPromise< T extends $Utils.Record<'select', any> ? T['select'] extends true ? number - : GetScalarType + : GetScalarType : number > /** - * Allows you to perform aggregations operations on a Security_groups. + * Allows you to perform aggregations operations on a Locked_handles. * Note, that providing `undefined` is treated as the value not being there. * Read more here: https://pris.ly/d/null-undefined - * @param {Security_groupsAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @param {Locked_handlesAggregateArgs} args - Select which aggregations you would like to apply and on what fields. * @example * // Ordered by age ascending * // Where email contains prisma.io @@ -13015,13 +13088,13 @@ export namespace Prisma { * take: 10, * }) **/ - aggregate(args: Subset): Prisma.PrismaPromise> + aggregate(args: Subset): Prisma.PrismaPromise> /** - * Group by Security_groups. + * Group by Locked_handles. * Note, that providing `undefined` is treated as the value not being there. * Read more here: https://pris.ly/d/null-undefined - * @param {security_groupsGroupByArgs} args - Group by arguments. + * @param {locked_handlesGroupByArgs} args - Group by arguments. * @example * // Group by city, order by createdAt, get count * const result = await prisma.user.groupBy({ @@ -13036,14 +13109,1048 @@ export namespace Prisma { * **/ groupBy< - T extends security_groupsGroupByArgs, + T extends locked_handlesGroupByArgs, HasSelectOrTake extends Or< Extends<'skip', Keys>, Extends<'take', Keys> >, OrderByArg extends True extends HasSelectOrTake - ? { orderBy: security_groupsGroupByArgs['orderBy'] } - : { orderBy?: security_groupsGroupByArgs['orderBy'] }, + ? { orderBy: locked_handlesGroupByArgs['orderBy'] } + : { orderBy?: locked_handlesGroupByArgs['orderBy'] }, + OrderFields extends ExcludeUnderscoreKeys>>, + ByFields extends MaybeTupleToUnion, + ByValid extends Has, + HavingFields extends GetHavingFields, + HavingValid extends Has, + ByEmpty extends T['by'] extends never[] ? True : False, + InputErrors extends ByEmpty extends True + ? `Error: "by" must not be empty.` + : HavingValid extends False + ? { + [P in HavingFields]: P extends ByFields + ? never + : P extends string + ? `Error: Field "${P}" used in "having" needs to be provided in "by".` + : [ + Error, + 'Field ', + P, + ` in "having" needs to be provided in "by"`, + ] + }[HavingFields] + : 'take' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "take", you also need to provide "orderBy"' + : 'skip' extends Keys + ? 'orderBy' extends Keys + ? ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + : 'Error: If you provide "skip", you also need to provide "orderBy"' + : ByValid extends True + ? {} + : { + [P in OrderFields]: P extends ByFields + ? never + : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` + }[OrderFields] + >(args: SubsetIntersection & InputErrors): {} extends InputErrors ? GetLocked_handlesGroupByPayload : Prisma.PrismaPromise + /** + * Fields of the locked_handles model + */ + readonly fields: locked_handlesFieldRefs; + } + + /** + * The delegate class that acts as a "Promise-like" for locked_handles. + * Why is this prefixed with `Prisma__`? + * Because we want to prevent naming conflicts as mentioned in + * https://github.com/prisma/prisma-client-js/issues/707 + */ + export interface Prisma__locked_handlesClient extends Prisma.PrismaPromise { + readonly [Symbol.toStringTag]: "PrismaPromise" + /** + * Attaches callbacks for the resolution and/or rejection of the Promise. + * @param onfulfilled The callback to execute when the Promise is resolved. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of which ever callback is executed. + */ + then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback for only the rejection of the Promise. + * @param onrejected The callback to execute when the Promise is rejected. + * @returns A Promise for the completion of the callback. + */ + catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): $Utils.JsPromise + /** + * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The + * resolved value cannot be modified from the callback. + * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). + * @returns A Promise for the completion of the callback. + */ + finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise + } + + + + + /** + * Fields of the locked_handles model + */ + interface locked_handlesFieldRefs { + readonly locked_handle_id: FieldRef<"locked_handles", 'Int'> + readonly locked_handle: FieldRef<"locked_handles", 'String'> + readonly locked_handle_lower: FieldRef<"locked_handles", 'String'> + readonly create_date: FieldRef<"locked_handles", 'DateTime'> + } + + + // Custom InputTypes + /** + * locked_handles findUnique + */ + export type locked_handlesFindUniqueArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * Filter, which locked_handles to fetch. + */ + where: locked_handlesWhereUniqueInput + } + + /** + * locked_handles findUniqueOrThrow + */ + export type locked_handlesFindUniqueOrThrowArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * Filter, which locked_handles to fetch. + */ + where: locked_handlesWhereUniqueInput + } + + /** + * locked_handles findFirst + */ + export type locked_handlesFindFirstArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * Filter, which locked_handles to fetch. + */ + where?: locked_handlesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of locked_handles to fetch. + */ + orderBy?: locked_handlesOrderByWithRelationInput | locked_handlesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for locked_handles. + */ + cursor?: locked_handlesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` locked_handles from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` locked_handles. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of locked_handles. + */ + distinct?: Locked_handlesScalarFieldEnum | Locked_handlesScalarFieldEnum[] + } + + /** + * locked_handles findFirstOrThrow + */ + export type locked_handlesFindFirstOrThrowArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * Filter, which locked_handles to fetch. + */ + where?: locked_handlesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of locked_handles to fetch. + */ + orderBy?: locked_handlesOrderByWithRelationInput | locked_handlesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for searching for locked_handles. + */ + cursor?: locked_handlesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` locked_handles from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` locked_handles. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} + * + * Filter by unique combinations of locked_handles. + */ + distinct?: Locked_handlesScalarFieldEnum | Locked_handlesScalarFieldEnum[] + } + + /** + * locked_handles findMany + */ + export type locked_handlesFindManyArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * Filter, which locked_handles to fetch. + */ + where?: locked_handlesWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of locked_handles to fetch. + */ + orderBy?: locked_handlesOrderByWithRelationInput | locked_handlesOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the position for listing locked_handles. + */ + cursor?: locked_handlesWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` locked_handles from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` locked_handles. + */ + skip?: number + distinct?: Locked_handlesScalarFieldEnum | Locked_handlesScalarFieldEnum[] + } + + /** + * locked_handles create + */ + export type locked_handlesCreateArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * The data needed to create a locked_handles. + */ + data: XOR + } + + /** + * locked_handles createMany + */ + export type locked_handlesCreateManyArgs = { + /** + * The data used to create many locked_handles. + */ + data: locked_handlesCreateManyInput | locked_handlesCreateManyInput[] + skipDuplicates?: boolean + } + + /** + * locked_handles createManyAndReturn + */ + export type locked_handlesCreateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelectCreateManyAndReturn | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * The data used to create many locked_handles. + */ + data: locked_handlesCreateManyInput | locked_handlesCreateManyInput[] + skipDuplicates?: boolean + } + + /** + * locked_handles update + */ + export type locked_handlesUpdateArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * The data needed to update a locked_handles. + */ + data: XOR + /** + * Choose, which locked_handles to update. + */ + where: locked_handlesWhereUniqueInput + } + + /** + * locked_handles updateMany + */ + export type locked_handlesUpdateManyArgs = { + /** + * The data used to update locked_handles. + */ + data: XOR + /** + * Filter which locked_handles to update + */ + where?: locked_handlesWhereInput + /** + * Limit how many locked_handles to update. + */ + limit?: number + } + + /** + * locked_handles updateManyAndReturn + */ + export type locked_handlesUpdateManyAndReturnArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelectUpdateManyAndReturn | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * The data used to update locked_handles. + */ + data: XOR + /** + * Filter which locked_handles to update + */ + where?: locked_handlesWhereInput + /** + * Limit how many locked_handles to update. + */ + limit?: number + } + + /** + * locked_handles upsert + */ + export type locked_handlesUpsertArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * The filter to search for the locked_handles to update in case it exists. + */ + where: locked_handlesWhereUniqueInput + /** + * In case the locked_handles found by the `where` argument doesn't exist, create a new locked_handles with this data. + */ + create: XOR + /** + * In case the locked_handles was found with the provided `where` argument, update it with this data. + */ + update: XOR + } + + /** + * locked_handles delete + */ + export type locked_handlesDeleteArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + /** + * Filter which locked_handles to delete. + */ + where: locked_handlesWhereUniqueInput + } + + /** + * locked_handles deleteMany + */ + export type locked_handlesDeleteManyArgs = { + /** + * Filter which locked_handles to delete + */ + where?: locked_handlesWhereInput + /** + * Limit how many locked_handles to delete. + */ + limit?: number + } + + /** + * locked_handles without action + */ + export type locked_handlesDefaultArgs = { + /** + * Select specific fields to fetch from the locked_handles + */ + select?: locked_handlesSelect | null + /** + * Omit specific fields from the locked_handles + */ + omit?: locked_handlesOmit | null + } + + + /** + * Model security_groups + */ + + export type AggregateSecurity_groups = { + _count: Security_groupsCountAggregateOutputType | null + _avg: Security_groupsAvgAggregateOutputType | null + _sum: Security_groupsSumAggregateOutputType | null + _min: Security_groupsMinAggregateOutputType | null + _max: Security_groupsMaxAggregateOutputType | null + } + + export type Security_groupsAvgAggregateOutputType = { + group_id: Decimal | null + challenge_group_ind: number | null + create_user_id: Decimal | null + } + + export type Security_groupsSumAggregateOutputType = { + group_id: Decimal | null + challenge_group_ind: number | null + create_user_id: Decimal | null + } + + export type Security_groupsMinAggregateOutputType = { + group_id: Decimal | null + description: string | null + challenge_group_ind: number | null + create_user_id: Decimal | null + } + + export type Security_groupsMaxAggregateOutputType = { + group_id: Decimal | null + description: string | null + challenge_group_ind: number | null + create_user_id: Decimal | null + } + + export type Security_groupsCountAggregateOutputType = { + group_id: number + description: number + challenge_group_ind: number + create_user_id: number + _all: number + } + + + export type Security_groupsAvgAggregateInputType = { + group_id?: true + challenge_group_ind?: true + create_user_id?: true + } + + export type Security_groupsSumAggregateInputType = { + group_id?: true + challenge_group_ind?: true + create_user_id?: true + } + + export type Security_groupsMinAggregateInputType = { + group_id?: true + description?: true + challenge_group_ind?: true + create_user_id?: true + } + + export type Security_groupsMaxAggregateInputType = { + group_id?: true + description?: true + challenge_group_ind?: true + create_user_id?: true + } + + export type Security_groupsCountAggregateInputType = { + group_id?: true + description?: true + challenge_group_ind?: true + create_user_id?: true + _all?: true + } + + export type Security_groupsAggregateArgs = { + /** + * Filter which security_groups to aggregate. + */ + where?: security_groupsWhereInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} + * + * Determine the order of security_groups to fetch. + */ + orderBy?: security_groupsOrderByWithRelationInput | security_groupsOrderByWithRelationInput[] + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} + * + * Sets the start position + */ + cursor?: security_groupsWhereUniqueInput + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Take `±n` security_groups from the position of the cursor. + */ + take?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} + * + * Skip the first `n` security_groups. + */ + skip?: number + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Count returned security_groups + **/ + _count?: true | Security_groupsCountAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to average + **/ + _avg?: Security_groupsAvgAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to sum + **/ + _sum?: Security_groupsSumAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the minimum value + **/ + _min?: Security_groupsMinAggregateInputType + /** + * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} + * + * Select which fields to find the maximum value + **/ + _max?: Security_groupsMaxAggregateInputType + } + + export type GetSecurity_groupsAggregateType = { + [P in keyof T & keyof AggregateSecurity_groups]: P extends '_count' | 'count' + ? T[P] extends true + ? number + : GetScalarType + : GetScalarType + } + + + + + export type security_groupsGroupByArgs = { + where?: security_groupsWhereInput + orderBy?: security_groupsOrderByWithAggregationInput | security_groupsOrderByWithAggregationInput[] + by: Security_groupsScalarFieldEnum[] | Security_groupsScalarFieldEnum + having?: security_groupsScalarWhereWithAggregatesInput + take?: number + skip?: number + _count?: Security_groupsCountAggregateInputType | true + _avg?: Security_groupsAvgAggregateInputType + _sum?: Security_groupsSumAggregateInputType + _min?: Security_groupsMinAggregateInputType + _max?: Security_groupsMaxAggregateInputType + } + + export type Security_groupsGroupByOutputType = { + group_id: Decimal + description: string + challenge_group_ind: number + create_user_id: Decimal | null + _count: Security_groupsCountAggregateOutputType | null + _avg: Security_groupsAvgAggregateOutputType | null + _sum: Security_groupsSumAggregateOutputType | null + _min: Security_groupsMinAggregateOutputType | null + _max: Security_groupsMaxAggregateOutputType | null + } + + type GetSecurity_groupsGroupByPayload = Prisma.PrismaPromise< + Array< + PickEnumerable & + { + [P in ((keyof T) & (keyof Security_groupsGroupByOutputType))]: P extends '_count' + ? T[P] extends boolean + ? number + : GetScalarType + : GetScalarType + } + > + > + + + export type security_groupsSelect = $Extensions.GetSelect<{ + group_id?: boolean + description?: boolean + challenge_group_ind?: boolean + create_user_id?: boolean + user_group_xref?: boolean | security_groups$user_group_xrefArgs + _count?: boolean | Security_groupsCountOutputTypeDefaultArgs + }, ExtArgs["result"]["security_groups"]> + + export type security_groupsSelectCreateManyAndReturn = $Extensions.GetSelect<{ + group_id?: boolean + description?: boolean + challenge_group_ind?: boolean + create_user_id?: boolean + }, ExtArgs["result"]["security_groups"]> + + export type security_groupsSelectUpdateManyAndReturn = $Extensions.GetSelect<{ + group_id?: boolean + description?: boolean + challenge_group_ind?: boolean + create_user_id?: boolean + }, ExtArgs["result"]["security_groups"]> + + export type security_groupsSelectScalar = { + group_id?: boolean + description?: boolean + challenge_group_ind?: boolean + create_user_id?: boolean + } + + export type security_groupsOmit = $Extensions.GetOmit<"group_id" | "description" | "challenge_group_ind" | "create_user_id", ExtArgs["result"]["security_groups"]> + export type security_groupsInclude = { + user_group_xref?: boolean | security_groups$user_group_xrefArgs + _count?: boolean | Security_groupsCountOutputTypeDefaultArgs + } + export type security_groupsIncludeCreateManyAndReturn = {} + export type security_groupsIncludeUpdateManyAndReturn = {} + + export type $security_groupsPayload = { + name: "security_groups" + objects: { + user_group_xref: Prisma.$user_group_xrefPayload[] + } + scalars: $Extensions.GetPayloadResult<{ + group_id: Prisma.Decimal + description: string + challenge_group_ind: number + create_user_id: Prisma.Decimal | null + }, ExtArgs["result"]["security_groups"]> + composites: {} + } + + type security_groupsGetPayload = $Result.GetResult + + type security_groupsCountArgs = + Omit & { + select?: Security_groupsCountAggregateInputType | true + } + + export interface security_groupsDelegate { + [K: symbol]: { types: Prisma.TypeMap['model']['security_groups'], meta: { name: 'security_groups' } } + /** + * Find zero or one Security_groups that matches the filter. + * @param {security_groupsFindUniqueArgs} args - Arguments to find a Security_groups + * @example + * // Get one Security_groups + * const security_groups = await prisma.security_groups.findUnique({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUnique(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find one Security_groups that matches the filter or throw an error with `error.code='P2025'` + * if no matches were found. + * @param {security_groupsFindUniqueOrThrowArgs} args - Arguments to find a Security_groups + * @example + * // Get one Security_groups + * const security_groups = await prisma.security_groups.findUniqueOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findUniqueOrThrow(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Security_groups that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {security_groupsFindFirstArgs} args - Arguments to find a Security_groups + * @example + * // Get one Security_groups + * const security_groups = await prisma.security_groups.findFirst({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirst(args?: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + + /** + * Find the first Security_groups that matches the filter or + * throw `PrismaKnownClientError` with `P2025` code if no matches were found. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {security_groupsFindFirstOrThrowArgs} args - Arguments to find a Security_groups + * @example + * // Get one Security_groups + * const security_groups = await prisma.security_groups.findFirstOrThrow({ + * where: { + * // ... provide filter here + * } + * }) + */ + findFirstOrThrow(args?: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Find zero or more Security_groups that matches the filter. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {security_groupsFindManyArgs} args - Arguments to filter and select certain fields only. + * @example + * // Get all Security_groups + * const security_groups = await prisma.security_groups.findMany() + * + * // Get first 10 Security_groups + * const security_groups = await prisma.security_groups.findMany({ take: 10 }) + * + * // Only select the `group_id` + * const security_groupsWithGroup_idOnly = await prisma.security_groups.findMany({ select: { group_id: true } }) + * + */ + findMany(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "findMany", GlobalOmitOptions>> + + /** + * Create a Security_groups. + * @param {security_groupsCreateArgs} args - Arguments to create a Security_groups. + * @example + * // Create one Security_groups + * const Security_groups = await prisma.security_groups.create({ + * data: { + * // ... data to create a Security_groups + * } + * }) + * + */ + create(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Create many Security_groups. + * @param {security_groupsCreateManyArgs} args - Arguments to create many Security_groups. + * @example + * // Create many Security_groups + * const security_groups = await prisma.security_groups.createMany({ + * data: [ + * // ... provide data here + * ] + * }) + * + */ + createMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Create many Security_groups and returns the data saved in the database. + * @param {security_groupsCreateManyAndReturnArgs} args - Arguments to create many Security_groups. + * @example + * // Create many Security_groups + * const security_groups = await prisma.security_groups.createManyAndReturn({ + * data: [ + * // ... provide data here + * ] + * }) + * + * // Create many Security_groups and only return the `group_id` + * const security_groupsWithGroup_idOnly = await prisma.security_groups.createManyAndReturn({ + * select: { group_id: true }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + createManyAndReturn(args?: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "createManyAndReturn", GlobalOmitOptions>> + + /** + * Delete a Security_groups. + * @param {security_groupsDeleteArgs} args - Arguments to delete one Security_groups. + * @example + * // Delete one Security_groups + * const Security_groups = await prisma.security_groups.delete({ + * where: { + * // ... filter to delete one Security_groups + * } + * }) + * + */ + delete(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Update one Security_groups. + * @param {security_groupsUpdateArgs} args - Arguments to update one Security_groups. + * @example + * // Update one Security_groups + * const security_groups = await prisma.security_groups.update({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + update(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + /** + * Delete zero or more Security_groups. + * @param {security_groupsDeleteManyArgs} args - Arguments to filter Security_groups to delete. + * @example + * // Delete a few Security_groups + * const { count } = await prisma.security_groups.deleteMany({ + * where: { + * // ... provide filter here + * } + * }) + * + */ + deleteMany(args?: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Security_groups. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {security_groupsUpdateManyArgs} args - Arguments to update one or more rows. + * @example + * // Update many Security_groups + * const security_groups = await prisma.security_groups.updateMany({ + * where: { + * // ... provide filter here + * }, + * data: { + * // ... provide data here + * } + * }) + * + */ + updateMany(args: SelectSubset>): Prisma.PrismaPromise + + /** + * Update zero or more Security_groups and returns the data updated in the database. + * @param {security_groupsUpdateManyAndReturnArgs} args - Arguments to update many Security_groups. + * @example + * // Update many Security_groups + * const security_groups = await prisma.security_groups.updateManyAndReturn({ + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * + * // Update zero or more Security_groups and only return the `group_id` + * const security_groupsWithGroup_idOnly = await prisma.security_groups.updateManyAndReturn({ + * select: { group_id: true }, + * where: { + * // ... provide filter here + * }, + * data: [ + * // ... provide data here + * ] + * }) + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * + */ + updateManyAndReturn(args: SelectSubset>): Prisma.PrismaPromise<$Result.GetResult, T, "updateManyAndReturn", GlobalOmitOptions>> + + /** + * Create or update one Security_groups. + * @param {security_groupsUpsertArgs} args - Arguments to update or create a Security_groups. + * @example + * // Update or create a Security_groups + * const security_groups = await prisma.security_groups.upsert({ + * create: { + * // ... data to create a Security_groups + * }, + * update: { + * // ... in case it already exists, update + * }, + * where: { + * // ... the filter for the Security_groups we want to update + * } + * }) + */ + upsert(args: SelectSubset>): Prisma__security_groupsClient<$Result.GetResult, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> + + + /** + * Count the number of Security_groups. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {security_groupsCountArgs} args - Arguments to filter Security_groups to count. + * @example + * // Count the number of Security_groups + * const count = await prisma.security_groups.count({ + * where: { + * // ... the filter for the Security_groups we want to count + * } + * }) + **/ + count( + args?: Subset, + ): Prisma.PrismaPromise< + T extends $Utils.Record<'select', any> + ? T['select'] extends true + ? number + : GetScalarType + : number + > + + /** + * Allows you to perform aggregations operations on a Security_groups. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {Security_groupsAggregateArgs} args - Select which aggregations you would like to apply and on what fields. + * @example + * // Ordered by age ascending + * // Where email contains prisma.io + * // Limited to the 10 users + * const aggregations = await prisma.user.aggregate({ + * _avg: { + * age: true, + * }, + * where: { + * email: { + * contains: "prisma.io", + * }, + * }, + * orderBy: { + * age: "asc", + * }, + * take: 10, + * }) + **/ + aggregate(args: Subset): Prisma.PrismaPromise> + + /** + * Group by Security_groups. + * Note, that providing `undefined` is treated as the value not being there. + * Read more here: https://pris.ly/d/null-undefined + * @param {security_groupsGroupByArgs} args - Group by arguments. + * @example + * // Group by city, order by createdAt, get count + * const result = await prisma.user.groupBy({ + * by: ['city', 'createdAt'], + * orderBy: { + * createdAt: true + * }, + * _count: { + * _all: true + * }, + * }) + * + **/ + groupBy< + T extends security_groupsGroupByArgs, + HasSelectOrTake extends Or< + Extends<'skip', Keys>, + Extends<'take', Keys> + >, + OrderByArg extends True extends HasSelectOrTake + ? { orderBy: security_groupsGroupByArgs['orderBy'] } + : { orderBy?: security_groupsGroupByArgs['orderBy'] }, OrderFields extends ExcludeUnderscoreKeys>>, ByFields extends MaybeTupleToUnion, ByValid extends Has, @@ -34104,6 +35211,16 @@ export namespace Prisma { export type Invalid_handlesScalarFieldEnum = (typeof Invalid_handlesScalarFieldEnum)[keyof typeof Invalid_handlesScalarFieldEnum] + export const Locked_handlesScalarFieldEnum: { + locked_handle_id: 'locked_handle_id', + locked_handle: 'locked_handle', + locked_handle_lower: 'locked_handle_lower', + create_date: 'create_date' + }; + + export type Locked_handlesScalarFieldEnum = (typeof Locked_handlesScalarFieldEnum)[keyof typeof Locked_handlesScalarFieldEnum] + + export const Security_groupsScalarFieldEnum: { group_id: 'group_id', description: 'description', @@ -34909,6 +36026,55 @@ export namespace Prisma { invalid_handle?: StringWithAggregatesFilter<"invalid_handles"> | string } + export type locked_handlesWhereInput = { + AND?: locked_handlesWhereInput | locked_handlesWhereInput[] + OR?: locked_handlesWhereInput[] + NOT?: locked_handlesWhereInput | locked_handlesWhereInput[] + locked_handle_id?: IntFilter<"locked_handles"> | number + locked_handle?: StringFilter<"locked_handles"> | string + locked_handle_lower?: StringFilter<"locked_handles"> | string + create_date?: DateTimeNullableFilter<"locked_handles"> | Date | string | null + } + + export type locked_handlesOrderByWithRelationInput = { + locked_handle_id?: SortOrder + locked_handle?: SortOrder + locked_handle_lower?: SortOrder + create_date?: SortOrderInput | SortOrder + } + + export type locked_handlesWhereUniqueInput = Prisma.AtLeast<{ + locked_handle_id?: number + locked_handle_lower?: string + AND?: locked_handlesWhereInput | locked_handlesWhereInput[] + OR?: locked_handlesWhereInput[] + NOT?: locked_handlesWhereInput | locked_handlesWhereInput[] + locked_handle?: StringFilter<"locked_handles"> | string + create_date?: DateTimeNullableFilter<"locked_handles"> | Date | string | null + }, "locked_handle_id" | "locked_handle_lower"> + + export type locked_handlesOrderByWithAggregationInput = { + locked_handle_id?: SortOrder + locked_handle?: SortOrder + locked_handle_lower?: SortOrder + create_date?: SortOrderInput | SortOrder + _count?: locked_handlesCountOrderByAggregateInput + _avg?: locked_handlesAvgOrderByAggregateInput + _max?: locked_handlesMaxOrderByAggregateInput + _min?: locked_handlesMinOrderByAggregateInput + _sum?: locked_handlesSumOrderByAggregateInput + } + + export type locked_handlesScalarWhereWithAggregatesInput = { + AND?: locked_handlesScalarWhereWithAggregatesInput | locked_handlesScalarWhereWithAggregatesInput[] + OR?: locked_handlesScalarWhereWithAggregatesInput[] + NOT?: locked_handlesScalarWhereWithAggregatesInput | locked_handlesScalarWhereWithAggregatesInput[] + locked_handle_id?: IntWithAggregatesFilter<"locked_handles"> | number + locked_handle?: StringWithAggregatesFilter<"locked_handles"> | string + locked_handle_lower?: StringWithAggregatesFilter<"locked_handles"> | string + create_date?: DateTimeNullableWithAggregatesFilter<"locked_handles"> | Date | string | null + } + export type security_groupsWhereInput = { AND?: security_groupsWhereInput | security_groupsWhereInput[] OR?: security_groupsWhereInput[] @@ -36613,6 +37779,52 @@ export namespace Prisma { invalid_handle?: StringFieldUpdateOperationsInput | string } + export type locked_handlesCreateInput = { + locked_handle: string + locked_handle_lower: string + create_date?: Date | string | null + } + + export type locked_handlesUncheckedCreateInput = { + locked_handle_id?: number + locked_handle: string + locked_handle_lower: string + create_date?: Date | string | null + } + + export type locked_handlesUpdateInput = { + locked_handle?: StringFieldUpdateOperationsInput | string + locked_handle_lower?: StringFieldUpdateOperationsInput | string + create_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + } + + export type locked_handlesUncheckedUpdateInput = { + locked_handle_id?: IntFieldUpdateOperationsInput | number + locked_handle?: StringFieldUpdateOperationsInput | string + locked_handle_lower?: StringFieldUpdateOperationsInput | string + create_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + } + + export type locked_handlesCreateManyInput = { + locked_handle_id?: number + locked_handle: string + locked_handle_lower: string + create_date?: Date | string | null + } + + export type locked_handlesUpdateManyMutationInput = { + locked_handle?: StringFieldUpdateOperationsInput | string + locked_handle_lower?: StringFieldUpdateOperationsInput | string + create_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + } + + export type locked_handlesUncheckedUpdateManyInput = { + locked_handle_id?: IntFieldUpdateOperationsInput | number + locked_handle?: StringFieldUpdateOperationsInput | string + locked_handle_lower?: StringFieldUpdateOperationsInput | string + create_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null + } + export type security_groupsCreateInput = { group_id: Decimal | DecimalJsLike | number | string description: string @@ -38386,6 +39598,35 @@ export namespace Prisma { invalid_handle_id?: SortOrder } + export type locked_handlesCountOrderByAggregateInput = { + locked_handle_id?: SortOrder + locked_handle?: SortOrder + locked_handle_lower?: SortOrder + create_date?: SortOrder + } + + export type locked_handlesAvgOrderByAggregateInput = { + locked_handle_id?: SortOrder + } + + export type locked_handlesMaxOrderByAggregateInput = { + locked_handle_id?: SortOrder + locked_handle?: SortOrder + locked_handle_lower?: SortOrder + create_date?: SortOrder + } + + export type locked_handlesMinOrderByAggregateInput = { + locked_handle_id?: SortOrder + locked_handle?: SortOrder + locked_handle_lower?: SortOrder + create_date?: SortOrder + } + + export type locked_handlesSumOrderByAggregateInput = { + locked_handle_id?: SortOrder + } + export type User_group_xrefListRelationFilter = { every?: user_group_xrefWhereInput some?: user_group_xrefWhereInput diff --git a/packages/identity-prisma-client/index.js b/packages/identity-prisma-client/index.js index 8583f7f..701cdd6 100644 --- a/packages/identity-prisma-client/index.js +++ b/packages/identity-prisma-client/index.js @@ -160,6 +160,13 @@ exports.Prisma.Invalid_handlesScalarFieldEnum = { invalid_handle: 'invalid_handle' }; +exports.Prisma.Locked_handlesScalarFieldEnum = { + locked_handle_id: 'locked_handle_id', + locked_handle: 'locked_handle', + locked_handle_lower: 'locked_handle_lower', + create_date: 'create_date' +}; + exports.Prisma.Security_groupsScalarFieldEnum = { group_id: 'group_id', description: 'description', @@ -355,6 +362,7 @@ exports.Prisma.ModelName = { email_type_lu: 'email_type_lu', id_sequences: 'id_sequences', invalid_handles: 'invalid_handles', + locked_handles: 'locked_handles', security_groups: 'security_groups', security_status_lu: 'security_status_lu', security_user: 'security_user', @@ -386,7 +394,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/Users/hentrymartin/development/identity-api-v6/packages/identity-prisma-client", + "value": "/home/jmgasper/Documents/Git/v6/identity-api-v6/packages/identity-prisma-client", "fromEnvVar": null }, "config": { @@ -395,7 +403,7 @@ const config = { "binaryTargets": [ { "fromEnvVar": null, - "value": "darwin-arm64", + "value": "debian-openssl-3.0.x", "native": true }, { @@ -404,7 +412,7 @@ const config = { } ], "previewFeatures": [], - "sourceFilePath": "/Users/hentrymartin/development/identity-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { @@ -426,8 +434,8 @@ const config = { } } }, - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"multiSchema\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/identity-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"IDENTITY_DB_URL\")\n schemas = [\"identity\"]\n}\n\n// IDENTITY SCHEMA MODELS\n// (Introspected from existing database)\n// -----------------------------------------\n\nmodel achievement_type_lu {\n achievement_type_id Decimal @id(map: \"achv_type_lu_pkey\") @db.Decimal(5, 0)\n achievement_type_desc String @db.VarChar(64)\n user_achievement user_achievement[]\n\n @@schema(\"identity\")\n}\n\nmodel country {\n country_code String @id @db.VarChar(3)\n country_name String @db.VarChar(40)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n participating Decimal? @db.Decimal(1, 0)\n default_taxform_id Decimal? @db.Decimal(10, 0)\n longitude Decimal? @db.Decimal(10, 7)\n latitude Decimal? @db.Decimal(10, 7)\n region String? @db.VarChar(64)\n iso_name String? @db.VarChar(128)\n iso_alpha2_code String? @db.VarChar(2)\n iso_alpha3_code String? @db.VarChar(3)\n\n @@schema(\"identity\")\n}\n\nmodel dice_connection {\n id Int @id(map: \"dice_connection_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n connection String? @db.VarChar(50)\n accepted Boolean @default(false)\n created_at DateTime @default(now()) @db.Timestamp(6)\n short_url String? @db.VarChar(100)\n con_created_at DateTime? @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([connection])\n @@schema(\"identity\")\n}\n\nmodel email {\n user_id Decimal? @db.Decimal(10, 0)\n email_id Decimal @id(map: \"u110_23\") @default(dbgenerated(\"nextval('sequence_email_seq'::regclass)\")) @db.Decimal(10, 0)\n email_type_id Decimal? @db.Decimal(5, 0)\n address String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n primary_ind Decimal? @db.Decimal(1, 0)\n status_id Decimal? @db.Decimal(3, 0)\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailstatuslu_fk\")\n email_type_lu email_type_lu? @relation(fields: [email_type_id], references: [email_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailtypelu_fk\")\n user_email_xref user_email_xref[]\n user user? @relation(\"UserToEmail\", fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([user_id, primary_ind], map: \"email_user_id_idx\")\n @@index([user_id, email_type_id, status_id])\n @@index([address, status_id])\n @@schema(\"identity\")\n}\n\nmodel email_status_lu {\n status_id Decimal @id(map: \"email_status_lu_pk\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n user_email_xref user_email_xref[] // Added back-relation to user_email_xref\n\n @@schema(\"identity\")\n}\n\nmodel email_type_lu {\n email_type_id Decimal @id(map: \"email_type_lu_pk\") @db.Decimal(5, 0)\n email_type_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n\n @@schema(\"identity\")\n}\n\nmodel id_sequences {\n name String @id @db.VarChar(254)\n next_block_start Decimal @db.Decimal(12, 0)\n block_size Decimal @db.Decimal(10, 0)\n exhausted Decimal @default(0) @db.Decimal(1, 0)\n\n @@schema(\"identity\")\n}\n\nmodel invalid_handles {\n invalid_handle_id Int @id(map: \"pk_invalid_hand556\")\n invalid_handle String @db.VarChar(20)\n\n @@schema(\"identity\")\n}\n\nmodel security_groups {\n group_id Decimal @id(map: \"pk_security_groups\") @db.Decimal(12, 0)\n description String @db.VarChar(254)\n challenge_group_ind Int @default(0) @db.SmallInt\n create_user_id Decimal? @db.Decimal(12, 0)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_status_lu {\n security_status_id Decimal @id(map: \"securitystatuslu_pkey\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(200)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_user {\n login_id Decimal @id(map: \"pk_security_user\") @db.Decimal(12, 0)\n user_id String @unique(map: \"security_user_i2\") @db.VarChar(50)\n password String @db.VarChar(300)\n create_user_id Decimal? @db.Decimal(12, 0)\n modify_date DateTime? @db.Timestamp(6)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel social_login_provider {\n social_login_provider_id Decimal @id(map: \"social_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n user_social_login user_social_login[]\n\n @@schema(\"identity\")\n}\n\nmodel sso_login_provider {\n sso_login_provider_id Decimal @id(map: \"sso_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n type String @db.VarChar(50)\n identify_email_enabled Boolean @default(true)\n identify_handle_enabled Boolean @default(true)\n user_sso_login user_sso_login[]\n\n @@schema(\"identity\")\n}\n\nmodel user {\n user_id Decimal @id(map: \"u175_45\") @default(dbgenerated(\"nextval('sequence_user_seq'::regclass)\")) @db.Decimal(10, 0)\n first_name String? @db.VarChar(64)\n last_name String? @db.VarChar(64)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n handle String @db.VarChar(50)\n last_login DateTime? @db.Timestamp(6)\n status String @db.VarChar(3)\n activation_code String? @db.VarChar(32)\n middle_name String? @db.VarChar(64)\n handle_lower String? @db.VarChar(50)\n timezone_id Decimal? @db.Decimal(5, 0)\n last_site_hit_date DateTime? @db.Timestamp(6)\n name_in_another_language String? @db.VarChar(64)\n password String? @db.VarChar(16)\n open_id String? @db.VarChar(200)\n reg_source String? @db.VarChar(20)\n utm_source String? @db.VarChar(50)\n utm_medium String? @db.VarChar(50)\n utm_campaign String? @db.VarChar(50)\n dice_connection dice_connection?\n user_2fa user_2fa?\n user_achievement user_achievement[]\n user_otp_email user_otp_email[]\n user_social_login user_social_login[]\n user_sso_login user_sso_login[]\n user_status user_status[]\n user_email_xref user_email_xref[]\n emails email[] @relation(\"UserToEmail\")\n\n @@index([activation_code], map: \"user_activ_code_idx\")\n @@index([handle])\n @@index([handle_lower], map: \"user_lower_handle_idx\")\n @@index([open_id])\n @@index([status, handle_lower])\n @@schema(\"identity\")\n}\n\nmodel user_2fa {\n id Int @id(map: \"user_2fa_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n mfa_enabled Boolean @default(false)\n dice_enabled Boolean @default(false)\n created_by Decimal @db.Decimal(10, 0)\n created_at DateTime @default(now()) @db.Timestamp(6)\n modified_by Decimal @db.Decimal(10, 0)\n modified_at DateTime @default(now()) @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@schema(\"identity\")\n}\n\n/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\nmodel user_achievement {\n user_id Decimal @db.Decimal(10, 0) // Made non-nullable for PK\n achievement_date DateTime @db.Date\n achievement_type_id Decimal @db.Decimal(5, 0)\n description String? @db.VarChar(255)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n achievement_type_lu achievement_type_lu @relation(fields: [achievement_type_id], references: [achievement_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_type_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_user_fk\") // Made user relation non-nullable as user_id is non-nullable\n\n // Define composite primary key\n @@id([user_id, achievement_type_id], map: \"user_achievement_pkey\") // Added @@id\n // @@ignore // Removed @@ignore\n @@schema(\"identity\")\n}\n\nmodel user_group_xref {\n user_group_id Decimal @id(map: \"pk_user_group_xref\") @default(dbgenerated(\"nextval('sequence_user_group_seq'::regclass)\")) @db.Decimal(12, 0)\n login_id Decimal? @db.Decimal(12, 0)\n group_id Decimal? @db.Decimal(12, 0)\n create_user_id Decimal? @db.Decimal(12, 0)\n security_status_id Decimal? @db.Decimal(3, 0)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n security_user security_user? @relation(fields: [login_id], references: [login_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref1\")\n security_groups security_groups? @relation(fields: [group_id], references: [group_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref2\")\n security_status_lu security_status_lu? @relation(fields: [security_status_id], references: [security_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"usergroupxref_status_fk\")\n\n @@unique([login_id, group_id], map: \"user_grp_xref_i2\")\n @@schema(\"identity\")\n}\n\nmodel user_otp_email {\n id Int @id(map: \"user_otp_email_pk\") @default(autoincrement())\n user_id Decimal @db.Decimal(10, 0)\n mode Int @db.SmallInt\n otp String @db.VarChar(6)\n expire_at DateTime @db.Timestamp(6)\n resend Boolean @default(false)\n fail_count Int @default(0) @db.SmallInt\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@unique([user_id, mode])\n @@schema(\"identity\")\n}\n\nmodel user_social_login {\n social_user_id String? @db.VarChar(254)\n user_id Decimal @db.Decimal(10, 0)\n social_login_provider_id Decimal @db.Decimal(10, 0)\n social_user_name String @db.VarChar(100)\n social_email String? @db.VarChar(100)\n social_email_verified Boolean?\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @db.Timestamp(6)\n social_login_provider social_login_provider @relation(fields: [social_login_provider_id], references: [social_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_user_fk\")\n\n @@id([user_id, social_login_provider_id], map: \"user_social_prkey\")\n @@index([social_user_id, social_login_provider_id])\n @@schema(\"identity\")\n}\n\nmodel user_sso_login {\n user_id Decimal @db.Decimal(10, 0)\n sso_user_id String @db.VarChar(100)\n sso_user_name String? @db.VarChar(100)\n provider_id Decimal @db.Decimal(10, 0)\n email String? @db.VarChar(100)\n sso_login_provider sso_login_provider @relation(fields: [provider_id], references: [sso_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_user_fk\")\n\n @@id([user_id, provider_id], map: \"user_sso_prkey\") // Primary key\n @@index([sso_user_id, provider_id], map: \"idx_user_social_login_sso_user_id_provider_id\") // Index only, NOT unique\n @@schema(\"identity\")\n}\n\nmodel user_status {\n user_id Decimal @db.Decimal(10, 0)\n user_status_type_id Decimal @db.Decimal(3, 0)\n user_status_id Decimal? @db.Decimal(5, 0)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_user_fk\")\n user_status_lu user_status_lu? @relation(fields: [user_status_id], references: [user_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatuslu_fk\")\n user_status_type_lu user_status_type_lu @relation(fields: [user_status_type_id], references: [user_status_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatustype_fk\")\n\n @@id([user_id, user_status_type_id], map: \"userstatus_pk\")\n @@schema(\"identity\")\n}\n\nmodel user_status_lu {\n user_status_id Decimal @id(map: \"u113_26\") @db.Decimal(5, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\nmodel user_status_type_lu {\n user_status_type_id Decimal @id(map: \"userstatustypelu_pk\") @db.Decimal(3, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\n// Explicit definition for the user-email join table\nmodel user_email_xref {\n user_id Decimal @db.Decimal(10, 0)\n email_id Decimal @db.Decimal(10, 0)\n is_primary Boolean // Assuming boolean based on name, adjust if Decimal(1,0)\n status_id Decimal @db.Decimal(3, 0) // Assuming relates to email_status_lu\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_user_fk\") // Define relation\n email email @relation(fields: [email_id], references: [email_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_email_fk\") // Define relation\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id]) // Optional relation to status lookup\n\n @@id([user_id, email_id], map: \"user_email_xref_pkey\") // Define composite primary key\n @@index([email_id], map: \"user_email_xref_email_idx\")\n @@index([user_id, status_id])\n @@schema(\"identity\")\n}\n\n// -----------------------------------------\n// (Migrated from MySQL DDL)\n// -----------------------------------------\n\nmodel Client {\n id Int @id @default(autoincrement()) @map(\"id\")\n clientId String @unique @map(\"client_id\")\n name String\n redirectUri String? @map(\"redirect_uri\") @db.VarChar(8192)\n secret String?\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0) // Use Timestamp(0) if you need second precision like MySQL datetime\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n @@map(\"client\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel Role {\n id Int @id @default(autoincrement()) @map(\"id\")\n name String @unique @db.VarChar(45)\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n roleAssignments RoleAssignment[] // Relation field\n\n @@map(\"role\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel RoleAssignment {\n id Int @id @default(autoincrement()) @map(\"id\")\n roleId Int @map(\"role_id\")\n subjectId Int @map(\"subject_id\")\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n subjectType Int @default(1) @map(\"subject_type\")\n\n role Role @relation(fields: [roleId], references: [id], map: \"role_id\") // Relation field\n\n @@unique([roleId, subjectId, subjectType], map: \"role_subject_id_subject_type\")\n @@index([subjectId], map: \"subject_id_idx\")\n @@index([roleId], map: \"role_id_idx\")\n @@index([subjectId, subjectType])\n @@map(\"role_assignment\")\n @@schema(\"identity\")\n}\n", - "inlineSchemaHash": "146549dc4277ba3db4608942c2cae9f5d81439e3f0cff4d805cba070b9eac179", + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"multiSchema\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/identity-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"IDENTITY_DB_URL\")\n schemas = [\"identity\"]\n}\n\n// IDENTITY SCHEMA MODELS\n// (Introspected from existing database)\n// -----------------------------------------\n\nmodel achievement_type_lu {\n achievement_type_id Decimal @id(map: \"achv_type_lu_pkey\") @db.Decimal(5, 0)\n achievement_type_desc String @db.VarChar(64)\n user_achievement user_achievement[]\n\n @@schema(\"identity\")\n}\n\nmodel country {\n country_code String @id @db.VarChar(3)\n country_name String @db.VarChar(40)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n participating Decimal? @db.Decimal(1, 0)\n default_taxform_id Decimal? @db.Decimal(10, 0)\n longitude Decimal? @db.Decimal(10, 7)\n latitude Decimal? @db.Decimal(10, 7)\n region String? @db.VarChar(64)\n iso_name String? @db.VarChar(128)\n iso_alpha2_code String? @db.VarChar(2)\n iso_alpha3_code String? @db.VarChar(3)\n\n @@schema(\"identity\")\n}\n\nmodel dice_connection {\n id Int @id(map: \"dice_connection_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n connection String? @db.VarChar(50)\n accepted Boolean @default(false)\n created_at DateTime @default(now()) @db.Timestamp(6)\n short_url String? @db.VarChar(100)\n con_created_at DateTime? @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([connection])\n @@schema(\"identity\")\n}\n\nmodel email {\n user_id Decimal? @db.Decimal(10, 0)\n email_id Decimal @id(map: \"u110_23\") @default(dbgenerated(\"nextval('sequence_email_seq'::regclass)\")) @db.Decimal(10, 0)\n email_type_id Decimal? @db.Decimal(5, 0)\n address String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n primary_ind Decimal? @db.Decimal(1, 0)\n status_id Decimal? @db.Decimal(3, 0)\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailstatuslu_fk\")\n email_type_lu email_type_lu? @relation(fields: [email_type_id], references: [email_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailtypelu_fk\")\n user_email_xref user_email_xref[]\n user user? @relation(\"UserToEmail\", fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([user_id, primary_ind], map: \"email_user_id_idx\")\n @@index([user_id, email_type_id, status_id])\n @@index([address, status_id])\n @@schema(\"identity\")\n}\n\nmodel email_status_lu {\n status_id Decimal @id(map: \"email_status_lu_pk\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n user_email_xref user_email_xref[] // Added back-relation to user_email_xref\n\n @@schema(\"identity\")\n}\n\nmodel email_type_lu {\n email_type_id Decimal @id(map: \"email_type_lu_pk\") @db.Decimal(5, 0)\n email_type_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n\n @@schema(\"identity\")\n}\n\nmodel id_sequences {\n name String @id @db.VarChar(254)\n next_block_start Decimal @db.Decimal(12, 0)\n block_size Decimal @db.Decimal(10, 0)\n exhausted Decimal @default(0) @db.Decimal(1, 0)\n\n @@schema(\"identity\")\n}\n\nmodel invalid_handles {\n invalid_handle_id Int @id(map: \"pk_invalid_hand556\")\n invalid_handle String @db.VarChar(20)\n\n @@schema(\"identity\")\n}\n\nmodel locked_handles {\n locked_handle_id Int @id(map: \"pk_locked_handles\") @default(autoincrement())\n locked_handle String @db.VarChar(50)\n locked_handle_lower String @unique(map: \"locked_handles_locked_handle_lower_key\") @db.VarChar(50)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n\n @@schema(\"identity\")\n}\n\nmodel security_groups {\n group_id Decimal @id(map: \"pk_security_groups\") @db.Decimal(12, 0)\n description String @db.VarChar(254)\n challenge_group_ind Int @default(0) @db.SmallInt\n create_user_id Decimal? @db.Decimal(12, 0)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_status_lu {\n security_status_id Decimal @id(map: \"securitystatuslu_pkey\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(200)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_user {\n login_id Decimal @id(map: \"pk_security_user\") @db.Decimal(12, 0)\n user_id String @unique(map: \"security_user_i2\") @db.VarChar(50)\n password String @db.VarChar(300)\n create_user_id Decimal? @db.Decimal(12, 0)\n modify_date DateTime? @db.Timestamp(6)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel social_login_provider {\n social_login_provider_id Decimal @id(map: \"social_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n user_social_login user_social_login[]\n\n @@schema(\"identity\")\n}\n\nmodel sso_login_provider {\n sso_login_provider_id Decimal @id(map: \"sso_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n type String @db.VarChar(50)\n identify_email_enabled Boolean @default(true)\n identify_handle_enabled Boolean @default(true)\n user_sso_login user_sso_login[]\n\n @@schema(\"identity\")\n}\n\nmodel user {\n user_id Decimal @id(map: \"u175_45\") @default(dbgenerated(\"nextval('sequence_user_seq'::regclass)\")) @db.Decimal(10, 0)\n first_name String? @db.VarChar(64)\n last_name String? @db.VarChar(64)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n handle String @db.VarChar(50)\n last_login DateTime? @db.Timestamp(6)\n status String @db.VarChar(3)\n activation_code String? @db.VarChar(32)\n middle_name String? @db.VarChar(64)\n handle_lower String? @db.VarChar(50)\n timezone_id Decimal? @db.Decimal(5, 0)\n last_site_hit_date DateTime? @db.Timestamp(6)\n name_in_another_language String? @db.VarChar(64)\n password String? @db.VarChar(16)\n open_id String? @db.VarChar(200)\n reg_source String? @db.VarChar(20)\n utm_source String? @db.VarChar(50)\n utm_medium String? @db.VarChar(50)\n utm_campaign String? @db.VarChar(50)\n dice_connection dice_connection?\n user_2fa user_2fa?\n user_achievement user_achievement[]\n user_otp_email user_otp_email[]\n user_social_login user_social_login[]\n user_sso_login user_sso_login[]\n user_status user_status[]\n user_email_xref user_email_xref[]\n emails email[] @relation(\"UserToEmail\")\n\n @@index([activation_code], map: \"user_activ_code_idx\")\n @@index([handle])\n @@index([handle_lower], map: \"user_lower_handle_idx\")\n @@index([open_id])\n @@index([status, handle_lower])\n @@schema(\"identity\")\n}\n\nmodel user_2fa {\n id Int @id(map: \"user_2fa_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n mfa_enabled Boolean @default(false)\n dice_enabled Boolean @default(false)\n created_by Decimal @db.Decimal(10, 0)\n created_at DateTime @default(now()) @db.Timestamp(6)\n modified_by Decimal @db.Decimal(10, 0)\n modified_at DateTime @default(now()) @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@schema(\"identity\")\n}\n\n/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\nmodel user_achievement {\n user_id Decimal @db.Decimal(10, 0) // Made non-nullable for PK\n achievement_date DateTime @db.Date\n achievement_type_id Decimal @db.Decimal(5, 0)\n description String? @db.VarChar(255)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n achievement_type_lu achievement_type_lu @relation(fields: [achievement_type_id], references: [achievement_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_type_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_user_fk\") // Made user relation non-nullable as user_id is non-nullable\n\n // Define composite primary key\n @@id([user_id, achievement_type_id], map: \"user_achievement_pkey\") // Added @@id\n // @@ignore // Removed @@ignore\n @@schema(\"identity\")\n}\n\nmodel user_group_xref {\n user_group_id Decimal @id(map: \"pk_user_group_xref\") @default(dbgenerated(\"nextval('sequence_user_group_seq'::regclass)\")) @db.Decimal(12, 0)\n login_id Decimal? @db.Decimal(12, 0)\n group_id Decimal? @db.Decimal(12, 0)\n create_user_id Decimal? @db.Decimal(12, 0)\n security_status_id Decimal? @db.Decimal(3, 0)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n security_user security_user? @relation(fields: [login_id], references: [login_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref1\")\n security_groups security_groups? @relation(fields: [group_id], references: [group_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref2\")\n security_status_lu security_status_lu? @relation(fields: [security_status_id], references: [security_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"usergroupxref_status_fk\")\n\n @@unique([login_id, group_id], map: \"user_grp_xref_i2\")\n @@schema(\"identity\")\n}\n\nmodel user_otp_email {\n id Int @id(map: \"user_otp_email_pk\") @default(autoincrement())\n user_id Decimal @db.Decimal(10, 0)\n mode Int @db.SmallInt\n otp String @db.VarChar(6)\n expire_at DateTime @db.Timestamp(6)\n resend Boolean @default(false)\n fail_count Int @default(0) @db.SmallInt\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@unique([user_id, mode])\n @@schema(\"identity\")\n}\n\nmodel user_social_login {\n social_user_id String? @db.VarChar(254)\n user_id Decimal @db.Decimal(10, 0)\n social_login_provider_id Decimal @db.Decimal(10, 0)\n social_user_name String @db.VarChar(100)\n social_email String? @db.VarChar(100)\n social_email_verified Boolean?\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @db.Timestamp(6)\n social_login_provider social_login_provider @relation(fields: [social_login_provider_id], references: [social_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_user_fk\")\n\n @@id([user_id, social_login_provider_id], map: \"user_social_prkey\")\n @@index([social_user_id, social_login_provider_id])\n @@schema(\"identity\")\n}\n\nmodel user_sso_login {\n user_id Decimal @db.Decimal(10, 0)\n sso_user_id String @db.VarChar(100)\n sso_user_name String? @db.VarChar(100)\n provider_id Decimal @db.Decimal(10, 0)\n email String? @db.VarChar(100)\n sso_login_provider sso_login_provider @relation(fields: [provider_id], references: [sso_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_user_fk\")\n\n @@id([user_id, provider_id], map: \"user_sso_prkey\") // Primary key\n @@index([sso_user_id, provider_id], map: \"idx_user_social_login_sso_user_id_provider_id\") // Index only, NOT unique\n @@schema(\"identity\")\n}\n\nmodel user_status {\n user_id Decimal @db.Decimal(10, 0)\n user_status_type_id Decimal @db.Decimal(3, 0)\n user_status_id Decimal? @db.Decimal(5, 0)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_user_fk\")\n user_status_lu user_status_lu? @relation(fields: [user_status_id], references: [user_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatuslu_fk\")\n user_status_type_lu user_status_type_lu @relation(fields: [user_status_type_id], references: [user_status_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatustype_fk\")\n\n @@id([user_id, user_status_type_id], map: \"userstatus_pk\")\n @@schema(\"identity\")\n}\n\nmodel user_status_lu {\n user_status_id Decimal @id(map: \"u113_26\") @db.Decimal(5, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\nmodel user_status_type_lu {\n user_status_type_id Decimal @id(map: \"userstatustypelu_pk\") @db.Decimal(3, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\n// Explicit definition for the user-email join table\nmodel user_email_xref {\n user_id Decimal @db.Decimal(10, 0)\n email_id Decimal @db.Decimal(10, 0)\n is_primary Boolean // Assuming boolean based on name, adjust if Decimal(1,0)\n status_id Decimal @db.Decimal(3, 0) // Assuming relates to email_status_lu\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_user_fk\") // Define relation\n email email @relation(fields: [email_id], references: [email_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_email_fk\") // Define relation\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id]) // Optional relation to status lookup\n\n @@id([user_id, email_id], map: \"user_email_xref_pkey\") // Define composite primary key\n @@index([email_id], map: \"user_email_xref_email_idx\")\n @@index([user_id, status_id])\n @@schema(\"identity\")\n}\n\n// -----------------------------------------\n// (Migrated from MySQL DDL)\n// -----------------------------------------\n\nmodel Client {\n id Int @id @default(autoincrement()) @map(\"id\")\n clientId String @unique @map(\"client_id\")\n name String\n redirectUri String? @map(\"redirect_uri\") @db.VarChar(8192)\n secret String?\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0) // Use Timestamp(0) if you need second precision like MySQL datetime\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n @@map(\"client\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel Role {\n id Int @id @default(autoincrement()) @map(\"id\")\n name String @unique @db.VarChar(45)\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n roleAssignments RoleAssignment[] // Relation field\n\n @@map(\"role\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel RoleAssignment {\n id Int @id @default(autoincrement()) @map(\"id\")\n roleId Int @map(\"role_id\")\n subjectId Int @map(\"subject_id\")\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n subjectType Int @default(1) @map(\"subject_type\")\n\n role Role @relation(fields: [roleId], references: [id], map: \"role_id\") // Relation field\n\n @@unique([roleId, subjectId, subjectType], map: \"role_subject_id_subject_type\")\n @@index([subjectId], map: \"subject_id_idx\")\n @@index([roleId], map: \"role_id_idx\")\n @@index([subjectId, subjectType])\n @@map(\"role_assignment\")\n @@schema(\"identity\")\n}\n", + "inlineSchemaHash": "00a34cea140eb65386c378bb3a6f18df674a5c703111f0621f0e67f3aedd647e", "copyEngine": true } @@ -448,7 +456,7 @@ if (!fs.existsSync(path.join(__dirname, 'schema.prisma'))) { config.isBundled = true } -config.runtimeDataModel = JSON.parse("{\"models\":{\"achievement_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_achievement\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_achievement\",\"nativeType\":null,\"relationName\":\"achievement_type_luTouser_achievement\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"country\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"country_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"country_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"40\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"participating\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"default_taxform_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"longitude\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"7\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"latitude\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"7\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"region\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"128\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_alpha2_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"2\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_alpha3_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"dice_connection\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"connection\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accepted\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"short_url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"con_created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"dice_connectionTouser\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_email_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"primary_ind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_status_lu\",\"nativeType\":null,\"relationName\":\"emailToemail_status_lu\",\"relationFromFields\":[\"status_id\"],\"relationToFields\":[\"status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_type_lu\",\"nativeType\":null,\"relationName\":\"emailToemail_type_lu\",\"relationFromFields\":[\"email_type_id\"],\"relationToFields\":[\"email_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"emailTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"UserToEmail\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailToemail_status_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"email_status_luTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailToemail_type_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"id_sequences\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"next_block_start\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"block_size\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"exhausted\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"invalid_handles\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"invalid_handle_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"invalid_handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"20\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_groups\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge_group_ind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_groupsTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"200\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_status_luTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_user\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"login_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"300\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_userTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"social_login_provider\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_social_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_social_login\",\"nativeType\":null,\"relationName\":\"social_login_providerTouser_social_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"sso_login_provider\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"sso_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"identify_email_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"identify_handle_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_sso_login\",\"nativeType\":null,\"relationName\":\"sso_login_providerTouser_sso_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_user_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"first_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_login\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activation_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"32\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"middle_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle_lower\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timezone_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_site_hit_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name_in_another_language\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"16\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"open_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"200\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reg_source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"20\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_medium\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_campaign\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"dice_connection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"dice_connection\",\"nativeType\":null,\"relationName\":\"dice_connectionTouser\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_2fa\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_2fa\",\"nativeType\":null,\"relationName\":\"userTouser_2fa\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_achievement\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_achievement\",\"nativeType\":null,\"relationName\":\"userTouser_achievement\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_otp_email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_otp_email\",\"nativeType\":null,\"relationName\":\"userTouser_otp_email\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_social_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_social_login\",\"nativeType\":null,\"relationName\":\"userTouser_social_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_sso_login\",\"nativeType\":null,\"relationName\":\"userTouser_sso_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"userTouser_status\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"userTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"emails\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"UserToEmail\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_2fa\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mfa_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"dice_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_2fa\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_achievement\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Date\",[]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"255\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"achievement_type_lu\",\"nativeType\":null,\"relationName\":\"achievement_type_luTouser_achievement\",\"relationFromFields\":[\"achievement_type_id\"],\"relationToFields\":[\"achievement_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_achievement\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"achievement_type_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\"},\"user_group_xref\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_user_group_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"login_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_user\",\"nativeType\":null,\"relationName\":\"security_userTouser_group_xref\",\"relationFromFields\":[\"login_id\"],\"relationToFields\":[\"login_id\"],\"relationOnDelete\":\"Cascade\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_groups\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_groups\",\"nativeType\":null,\"relationName\":\"security_groupsTouser_group_xref\",\"relationFromFields\":[\"group_id\"],\"relationToFields\":[\"group_id\"],\"relationOnDelete\":\"Cascade\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_status_lu\",\"nativeType\":null,\"relationName\":\"security_status_luTouser_group_xref\",\"relationFromFields\":[\"security_status_id\"],\"relationToFields\":[\"security_status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"login_id\",\"group_id\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"login_id\",\"group_id\"]}],\"isGenerated\":false},\"user_otp_email\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expire_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resend\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fail_count\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_otp_email\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"user_id\",\"mode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"user_id\",\"mode\"]}],\"isGenerated\":false},\"user_social_login\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"social_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_user_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_email_verified\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_login_provider\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"social_login_provider\",\"nativeType\":null,\"relationName\":\"social_login_providerTouser_social_login\",\"relationFromFields\":[\"social_login_provider_id\"],\"relationToFields\":[\"social_login_provider_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_social_login\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"social_login_provider_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_sso_login\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_user_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_login_provider\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"sso_login_provider\",\"nativeType\":null,\"relationName\":\"sso_login_providerTouser_sso_login\",\"relationFromFields\":[\"provider_id\"],\"relationToFields\":[\"sso_login_provider_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_sso_login\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"provider_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_status\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status_lu\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_lu\",\"relationFromFields\":[\"user_status_id\"],\"relationToFields\":[\"user_status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status_type_lu\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_type_lu\",\"relationFromFields\":[\"user_status_type_id\"],\"relationToFields\":[\"user_status_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"user_status_type_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_type_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_email_xref\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"is_primary\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_email_xref\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailTouser_email_xref\",\"relationFromFields\":[\"email_id\"],\"relationToFields\":[\"email_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_status_lu\",\"nativeType\":null,\"relationName\":\"email_status_luTouser_email_xref\",\"relationFromFields\":[\"status_id\"],\"relationToFields\":[\"status_id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"email_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Client\":{\"dbName\":\"client\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientId\",\"dbName\":\"client_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"redirectUri\",\"dbName\":\"redirect_uri\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"8192\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"secret\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Role\":{\"dbName\":\"role\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"45\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleAssignments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"RoleAssignment\",\"nativeType\":null,\"relationName\":\"RoleToRoleAssignment\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"RoleAssignment\":{\"dbName\":\"role_assignment\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"dbName\":\"role_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subjectId\",\"dbName\":\"subject_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subjectType\",\"dbName\":\"subject_type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Role\",\"nativeType\":null,\"relationName\":\"RoleToRoleAssignment\",\"relationFromFields\":[\"roleId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"roleId\",\"subjectId\",\"subjectType\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"roleId\",\"subjectId\",\"subjectType\"]}],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"achievement_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_achievement\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_achievement\",\"nativeType\":null,\"relationName\":\"achievement_type_luTouser_achievement\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"country\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"country_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"country_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"40\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"participating\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"default_taxform_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"longitude\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"7\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"latitude\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"7\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"region\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"128\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_alpha2_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"2\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"iso_alpha3_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"dice_connection\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"connection\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"accepted\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"short_url\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"con_created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"dice_connectionTouser\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_email_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"address\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"primary_ind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_status_lu\",\"nativeType\":null,\"relationName\":\"emailToemail_status_lu\",\"relationFromFields\":[\"status_id\"],\"relationToFields\":[\"status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_type_lu\",\"nativeType\":null,\"relationName\":\"emailToemail_type_lu\",\"relationFromFields\":[\"email_type_id\"],\"relationToFields\":[\"email_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"emailTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"UserToEmail\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailToemail_status_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"email_status_luTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"email_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_type_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailToemail_type_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"id_sequences\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"next_block_start\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"block_size\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"exhausted\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"1\",\"0\"]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"invalid_handles\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"invalid_handle_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"invalid_handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"20\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"locked_handles\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"locked_handle_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"locked_handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"locked_handle_lower\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_groups\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"challenge_group_ind\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_groupsTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"200\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_status_luTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"security_user\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"login_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"300\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_group_xref\",\"nativeType\":null,\"relationName\":\"security_userTouser_group_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"social_login_provider\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_social_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_social_login\",\"nativeType\":null,\"relationName\":\"social_login_providerTouser_social_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"sso_login_provider\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"sso_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"identify_email_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"identify_handle_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":true,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_sso_login\",\"nativeType\":null,\"relationName\":\"sso_login_providerTouser_sso_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_user_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"first_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_login\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"3\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"activation_code\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"32\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"middle_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"handle_lower\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"timezone_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"last_site_hit_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name_in_another_language\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"64\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"password\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"16\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"open_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"200\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"reg_source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"20\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_source\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_medium\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"utm_campaign\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"50\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"dice_connection\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"dice_connection\",\"nativeType\":null,\"relationName\":\"dice_connectionTouser\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_2fa\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_2fa\",\"nativeType\":null,\"relationName\":\"userTouser_2fa\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_achievement\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_achievement\",\"nativeType\":null,\"relationName\":\"userTouser_achievement\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_otp_email\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_otp_email\",\"nativeType\":null,\"relationName\":\"userTouser_otp_email\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_social_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_social_login\",\"nativeType\":null,\"relationName\":\"userTouser_social_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_sso_login\",\"nativeType\":null,\"relationName\":\"userTouser_sso_login\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"userTouser_status\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_email_xref\",\"nativeType\":null,\"relationName\":\"userTouser_email_xref\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"emails\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"UserToEmail\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_2fa\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mfa_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"dice_enabled\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"created_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_2fa\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_achievement\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Date\",[]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"255\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"achievement_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"achievement_type_lu\",\"nativeType\":null,\"relationName\":\"achievement_type_luTouser_achievement\",\"relationFromFields\":[\"achievement_type_id\"],\"relationToFields\":[\"achievement_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_achievement\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"achievement_type_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false,\"documentation\":\"The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\"},\"user_group_xref\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"default\":{\"name\":\"dbgenerated\",\"args\":[\"nextval('sequence_user_group_seq'::regclass)\"]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"login_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"group_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"12\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_user\",\"nativeType\":null,\"relationName\":\"security_userTouser_group_xref\",\"relationFromFields\":[\"login_id\"],\"relationToFields\":[\"login_id\"],\"relationOnDelete\":\"Cascade\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_groups\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_groups\",\"nativeType\":null,\"relationName\":\"security_groupsTouser_group_xref\",\"relationFromFields\":[\"group_id\"],\"relationToFields\":[\"group_id\"],\"relationOnDelete\":\"Cascade\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"security_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"security_status_lu\",\"nativeType\":null,\"relationName\":\"security_status_luTouser_group_xref\",\"relationFromFields\":[\"security_status_id\"],\"relationToFields\":[\"security_status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"login_id\",\"group_id\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"login_id\",\"group_id\"]}],\"isGenerated\":false},\"user_otp_email\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"mode\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"otp\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"expire_at\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"resend\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Boolean\",\"nativeType\":null,\"default\":false,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"fail_count\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":[\"SmallInt\",[]],\"default\":0,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_otp_email\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"user_id\",\"mode\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"user_id\",\"mode\"]}],\"isGenerated\":false},\"user_social_login\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"social_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"254\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_user_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_email_verified\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"social_login_provider\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"social_login_provider\",\"nativeType\":null,\"relationName\":\"social_login_providerTouser_social_login\",\"relationFromFields\":[\"social_login_provider_id\"],\"relationToFields\":[\"social_login_provider_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_social_login\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"social_login_provider_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_sso_login\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_user_name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"sso_login_provider\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"sso_login_provider\",\"nativeType\":null,\"relationName\":\"sso_login_providerTouser_sso_login\",\"relationFromFields\":[\"provider_id\"],\"relationToFields\":[\"sso_login_provider_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_sso_login\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"provider_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_status\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status_lu\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_lu\",\"relationFromFields\":[\"user_status_id\"],\"relationToFields\":[\"user_status_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status_type_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status_type_lu\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_type_lu\",\"relationFromFields\":[\"user_status_type_id\"],\"relationToFields\":[\"user_status_type_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"user_status_type_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"5\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_status_type_lu\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"description\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"100\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user_status\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user_status\",\"nativeType\":null,\"relationName\":\"user_statusTouser_status_type_lu\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"user_email_xref\":{\"dbName\":null,\"schema\":\"identity\",\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"10\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"is_primary\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Boolean\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"status_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Decimal\",\"nativeType\":[\"Decimal\",[\"3\",\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"create_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"6\"]],\"default\":{\"name\":\"now\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"user\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"user\",\"nativeType\":null,\"relationName\":\"userTouser_email_xref\",\"relationFromFields\":[\"user_id\"],\"relationToFields\":[\"user_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email\",\"nativeType\":null,\"relationName\":\"emailTouser_email_xref\",\"relationFromFields\":[\"email_id\"],\"relationToFields\":[\"email_id\"],\"relationOnDelete\":\"NoAction\",\"relationOnUpdate\":\"NoAction\",\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"email_status_lu\",\"nativeType\":null,\"relationName\":\"email_status_luTouser_email_xref\",\"relationFromFields\":[\"status_id\"],\"relationToFields\":[\"status_id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":{\"name\":null,\"fields\":[\"user_id\",\"email_id\"]},\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Client\":{\"dbName\":\"client\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"clientId\",\"dbName\":\"client_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"redirectUri\",\"dbName\":\"redirect_uri\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"8192\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"secret\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"Role\":{\"dbName\":\"role\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"name\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":true,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"String\",\"nativeType\":[\"VarChar\",[\"45\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleAssignments\",\"kind\":\"object\",\"isList\":true,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"RoleAssignment\",\"nativeType\":null,\"relationName\":\"RoleToRoleAssignment\",\"relationFromFields\":[],\"relationToFields\":[],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[],\"uniqueIndexes\":[],\"isGenerated\":false},\"RoleAssignment\":{\"dbName\":\"role_assignment\",\"schema\":\"identity\",\"fields\":[{\"name\":\"id\",\"dbName\":\"id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":true,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":{\"name\":\"autoincrement\",\"args\":[]},\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"roleId\",\"dbName\":\"role_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":true,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subjectId\",\"dbName\":\"subject_id\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Int\",\"nativeType\":null,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":false,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"DateTime\",\"nativeType\":[\"Timestamp\",[\"0\"]],\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"subjectType\",\"dbName\":\"subject_type\",\"kind\":\"scalar\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":true,\"type\":\"Int\",\"nativeType\":null,\"default\":1,\"isGenerated\":false,\"isUpdatedAt\":false},{\"name\":\"role\",\"kind\":\"object\",\"isList\":false,\"isRequired\":true,\"isUnique\":false,\"isId\":false,\"isReadOnly\":false,\"hasDefaultValue\":false,\"type\":\"Role\",\"nativeType\":null,\"relationName\":\"RoleToRoleAssignment\",\"relationFromFields\":[\"roleId\"],\"relationToFields\":[\"id\"],\"isGenerated\":false,\"isUpdatedAt\":false}],\"primaryKey\":null,\"uniqueFields\":[[\"roleId\",\"subjectId\",\"subjectType\"]],\"uniqueIndexes\":[{\"name\":null,\"fields\":[\"roleId\",\"subjectId\",\"subjectType\"]}],\"isGenerated\":false}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = undefined config.compilerWasm = undefined @@ -465,10 +473,6 @@ const PrismaClient = getPrismaClient(config) exports.PrismaClient = PrismaClient Object.assign(exports, Prisma) -// file annotations for bundling tools to include these files -path.join(__dirname, "libquery_engine-darwin-arm64.dylib.node"); -path.join(process.cwd(), "packages/identity-prisma-client/libquery_engine-darwin-arm64.dylib.node") - // file annotations for bundling tools to include these files path.join(__dirname, "libquery_engine-debian-openssl-3.0.x.so.node"); path.join(process.cwd(), "packages/identity-prisma-client/libquery_engine-debian-openssl-3.0.x.so.node") diff --git a/packages/identity-prisma-client/package.json b/packages/identity-prisma-client/package.json index dbb4b77..d892a78 100644 --- a/packages/identity-prisma-client/package.json +++ b/packages/identity-prisma-client/package.json @@ -1,5 +1,5 @@ { - "name": "prisma-client-ed11fc6843a77dd3656f1a6ad212d341b407adb62ba70105a8d9b3b98eadf03f", + "name": "prisma-client-93e29b8eac04252a4e8a59d7a3cb3a329ec37bb2fc21878b4f19eb16524518ef", "main": "index.js", "types": "index.d.ts", "browser": "default.js", diff --git a/packages/identity-prisma-client/schema.prisma b/packages/identity-prisma-client/schema.prisma index a358d3c..6b5d007 100644 --- a/packages/identity-prisma-client/schema.prisma +++ b/packages/identity-prisma-client/schema.prisma @@ -114,6 +114,15 @@ model invalid_handles { @@schema("identity") } +model locked_handles { + locked_handle_id Int @id(map: "pk_locked_handles") @default(autoincrement()) + locked_handle String @db.VarChar(50) + locked_handle_lower String @unique(map: "locked_handles_locked_handle_lower_key") @db.VarChar(50) + create_date DateTime? @default(now()) @db.Timestamp(6) + + @@schema("identity") +} + model security_groups { group_id Decimal @id(map: "pk_security_groups") @db.Decimal(12, 0) description String @db.VarChar(254) diff --git a/packages/identity-prisma-client/wasm.js b/packages/identity-prisma-client/wasm.js index 5135185..116d6e7 100644 --- a/packages/identity-prisma-client/wasm.js +++ b/packages/identity-prisma-client/wasm.js @@ -159,6 +159,13 @@ exports.Prisma.Invalid_handlesScalarFieldEnum = { invalid_handle: 'invalid_handle' }; +exports.Prisma.Locked_handlesScalarFieldEnum = { + locked_handle_id: 'locked_handle_id', + locked_handle: 'locked_handle', + locked_handle_lower: 'locked_handle_lower', + create_date: 'create_date' +}; + exports.Prisma.Security_groupsScalarFieldEnum = { group_id: 'group_id', description: 'description', @@ -354,6 +361,7 @@ exports.Prisma.ModelName = { email_type_lu: 'email_type_lu', id_sequences: 'id_sequences', invalid_handles: 'invalid_handles', + locked_handles: 'locked_handles', security_groups: 'security_groups', security_status_lu: 'security_status_lu', security_user: 'security_user', @@ -385,7 +393,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/Users/hentrymartin/development/identity-api-v6/packages/identity-prisma-client", + "value": "/home/jmgasper/Documents/Git/v6/identity-api-v6/packages/identity-prisma-client", "fromEnvVar": null }, "config": { @@ -394,7 +402,7 @@ const config = { "binaryTargets": [ { "fromEnvVar": null, - "value": "darwin-arm64", + "value": "debian-openssl-3.0.x", "native": true }, { @@ -403,7 +411,7 @@ const config = { } ], "previewFeatures": [], - "sourceFilePath": "/Users/hentrymartin/development/identity-api-v6/prisma/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { @@ -425,13 +433,13 @@ const config = { } } }, - "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"multiSchema\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/identity-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"IDENTITY_DB_URL\")\n schemas = [\"identity\"]\n}\n\n// IDENTITY SCHEMA MODELS\n// (Introspected from existing database)\n// -----------------------------------------\n\nmodel achievement_type_lu {\n achievement_type_id Decimal @id(map: \"achv_type_lu_pkey\") @db.Decimal(5, 0)\n achievement_type_desc String @db.VarChar(64)\n user_achievement user_achievement[]\n\n @@schema(\"identity\")\n}\n\nmodel country {\n country_code String @id @db.VarChar(3)\n country_name String @db.VarChar(40)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n participating Decimal? @db.Decimal(1, 0)\n default_taxform_id Decimal? @db.Decimal(10, 0)\n longitude Decimal? @db.Decimal(10, 7)\n latitude Decimal? @db.Decimal(10, 7)\n region String? @db.VarChar(64)\n iso_name String? @db.VarChar(128)\n iso_alpha2_code String? @db.VarChar(2)\n iso_alpha3_code String? @db.VarChar(3)\n\n @@schema(\"identity\")\n}\n\nmodel dice_connection {\n id Int @id(map: \"dice_connection_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n connection String? @db.VarChar(50)\n accepted Boolean @default(false)\n created_at DateTime @default(now()) @db.Timestamp(6)\n short_url String? @db.VarChar(100)\n con_created_at DateTime? @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([connection])\n @@schema(\"identity\")\n}\n\nmodel email {\n user_id Decimal? @db.Decimal(10, 0)\n email_id Decimal @id(map: \"u110_23\") @default(dbgenerated(\"nextval('sequence_email_seq'::regclass)\")) @db.Decimal(10, 0)\n email_type_id Decimal? @db.Decimal(5, 0)\n address String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n primary_ind Decimal? @db.Decimal(1, 0)\n status_id Decimal? @db.Decimal(3, 0)\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailstatuslu_fk\")\n email_type_lu email_type_lu? @relation(fields: [email_type_id], references: [email_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailtypelu_fk\")\n user_email_xref user_email_xref[]\n user user? @relation(\"UserToEmail\", fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([user_id, primary_ind], map: \"email_user_id_idx\")\n @@index([user_id, email_type_id, status_id])\n @@index([address, status_id])\n @@schema(\"identity\")\n}\n\nmodel email_status_lu {\n status_id Decimal @id(map: \"email_status_lu_pk\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n user_email_xref user_email_xref[] // Added back-relation to user_email_xref\n\n @@schema(\"identity\")\n}\n\nmodel email_type_lu {\n email_type_id Decimal @id(map: \"email_type_lu_pk\") @db.Decimal(5, 0)\n email_type_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n\n @@schema(\"identity\")\n}\n\nmodel id_sequences {\n name String @id @db.VarChar(254)\n next_block_start Decimal @db.Decimal(12, 0)\n block_size Decimal @db.Decimal(10, 0)\n exhausted Decimal @default(0) @db.Decimal(1, 0)\n\n @@schema(\"identity\")\n}\n\nmodel invalid_handles {\n invalid_handle_id Int @id(map: \"pk_invalid_hand556\")\n invalid_handle String @db.VarChar(20)\n\n @@schema(\"identity\")\n}\n\nmodel security_groups {\n group_id Decimal @id(map: \"pk_security_groups\") @db.Decimal(12, 0)\n description String @db.VarChar(254)\n challenge_group_ind Int @default(0) @db.SmallInt\n create_user_id Decimal? @db.Decimal(12, 0)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_status_lu {\n security_status_id Decimal @id(map: \"securitystatuslu_pkey\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(200)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_user {\n login_id Decimal @id(map: \"pk_security_user\") @db.Decimal(12, 0)\n user_id String @unique(map: \"security_user_i2\") @db.VarChar(50)\n password String @db.VarChar(300)\n create_user_id Decimal? @db.Decimal(12, 0)\n modify_date DateTime? @db.Timestamp(6)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel social_login_provider {\n social_login_provider_id Decimal @id(map: \"social_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n user_social_login user_social_login[]\n\n @@schema(\"identity\")\n}\n\nmodel sso_login_provider {\n sso_login_provider_id Decimal @id(map: \"sso_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n type String @db.VarChar(50)\n identify_email_enabled Boolean @default(true)\n identify_handle_enabled Boolean @default(true)\n user_sso_login user_sso_login[]\n\n @@schema(\"identity\")\n}\n\nmodel user {\n user_id Decimal @id(map: \"u175_45\") @default(dbgenerated(\"nextval('sequence_user_seq'::regclass)\")) @db.Decimal(10, 0)\n first_name String? @db.VarChar(64)\n last_name String? @db.VarChar(64)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n handle String @db.VarChar(50)\n last_login DateTime? @db.Timestamp(6)\n status String @db.VarChar(3)\n activation_code String? @db.VarChar(32)\n middle_name String? @db.VarChar(64)\n handle_lower String? @db.VarChar(50)\n timezone_id Decimal? @db.Decimal(5, 0)\n last_site_hit_date DateTime? @db.Timestamp(6)\n name_in_another_language String? @db.VarChar(64)\n password String? @db.VarChar(16)\n open_id String? @db.VarChar(200)\n reg_source String? @db.VarChar(20)\n utm_source String? @db.VarChar(50)\n utm_medium String? @db.VarChar(50)\n utm_campaign String? @db.VarChar(50)\n dice_connection dice_connection?\n user_2fa user_2fa?\n user_achievement user_achievement[]\n user_otp_email user_otp_email[]\n user_social_login user_social_login[]\n user_sso_login user_sso_login[]\n user_status user_status[]\n user_email_xref user_email_xref[]\n emails email[] @relation(\"UserToEmail\")\n\n @@index([activation_code], map: \"user_activ_code_idx\")\n @@index([handle])\n @@index([handle_lower], map: \"user_lower_handle_idx\")\n @@index([open_id])\n @@index([status, handle_lower])\n @@schema(\"identity\")\n}\n\nmodel user_2fa {\n id Int @id(map: \"user_2fa_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n mfa_enabled Boolean @default(false)\n dice_enabled Boolean @default(false)\n created_by Decimal @db.Decimal(10, 0)\n created_at DateTime @default(now()) @db.Timestamp(6)\n modified_by Decimal @db.Decimal(10, 0)\n modified_at DateTime @default(now()) @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@schema(\"identity\")\n}\n\n/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\nmodel user_achievement {\n user_id Decimal @db.Decimal(10, 0) // Made non-nullable for PK\n achievement_date DateTime @db.Date\n achievement_type_id Decimal @db.Decimal(5, 0)\n description String? @db.VarChar(255)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n achievement_type_lu achievement_type_lu @relation(fields: [achievement_type_id], references: [achievement_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_type_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_user_fk\") // Made user relation non-nullable as user_id is non-nullable\n\n // Define composite primary key\n @@id([user_id, achievement_type_id], map: \"user_achievement_pkey\") // Added @@id\n // @@ignore // Removed @@ignore\n @@schema(\"identity\")\n}\n\nmodel user_group_xref {\n user_group_id Decimal @id(map: \"pk_user_group_xref\") @default(dbgenerated(\"nextval('sequence_user_group_seq'::regclass)\")) @db.Decimal(12, 0)\n login_id Decimal? @db.Decimal(12, 0)\n group_id Decimal? @db.Decimal(12, 0)\n create_user_id Decimal? @db.Decimal(12, 0)\n security_status_id Decimal? @db.Decimal(3, 0)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n security_user security_user? @relation(fields: [login_id], references: [login_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref1\")\n security_groups security_groups? @relation(fields: [group_id], references: [group_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref2\")\n security_status_lu security_status_lu? @relation(fields: [security_status_id], references: [security_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"usergroupxref_status_fk\")\n\n @@unique([login_id, group_id], map: \"user_grp_xref_i2\")\n @@schema(\"identity\")\n}\n\nmodel user_otp_email {\n id Int @id(map: \"user_otp_email_pk\") @default(autoincrement())\n user_id Decimal @db.Decimal(10, 0)\n mode Int @db.SmallInt\n otp String @db.VarChar(6)\n expire_at DateTime @db.Timestamp(6)\n resend Boolean @default(false)\n fail_count Int @default(0) @db.SmallInt\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@unique([user_id, mode])\n @@schema(\"identity\")\n}\n\nmodel user_social_login {\n social_user_id String? @db.VarChar(254)\n user_id Decimal @db.Decimal(10, 0)\n social_login_provider_id Decimal @db.Decimal(10, 0)\n social_user_name String @db.VarChar(100)\n social_email String? @db.VarChar(100)\n social_email_verified Boolean?\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @db.Timestamp(6)\n social_login_provider social_login_provider @relation(fields: [social_login_provider_id], references: [social_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_user_fk\")\n\n @@id([user_id, social_login_provider_id], map: \"user_social_prkey\")\n @@index([social_user_id, social_login_provider_id])\n @@schema(\"identity\")\n}\n\nmodel user_sso_login {\n user_id Decimal @db.Decimal(10, 0)\n sso_user_id String @db.VarChar(100)\n sso_user_name String? @db.VarChar(100)\n provider_id Decimal @db.Decimal(10, 0)\n email String? @db.VarChar(100)\n sso_login_provider sso_login_provider @relation(fields: [provider_id], references: [sso_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_user_fk\")\n\n @@id([user_id, provider_id], map: \"user_sso_prkey\") // Primary key\n @@index([sso_user_id, provider_id], map: \"idx_user_social_login_sso_user_id_provider_id\") // Index only, NOT unique\n @@schema(\"identity\")\n}\n\nmodel user_status {\n user_id Decimal @db.Decimal(10, 0)\n user_status_type_id Decimal @db.Decimal(3, 0)\n user_status_id Decimal? @db.Decimal(5, 0)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_user_fk\")\n user_status_lu user_status_lu? @relation(fields: [user_status_id], references: [user_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatuslu_fk\")\n user_status_type_lu user_status_type_lu @relation(fields: [user_status_type_id], references: [user_status_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatustype_fk\")\n\n @@id([user_id, user_status_type_id], map: \"userstatus_pk\")\n @@schema(\"identity\")\n}\n\nmodel user_status_lu {\n user_status_id Decimal @id(map: \"u113_26\") @db.Decimal(5, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\nmodel user_status_type_lu {\n user_status_type_id Decimal @id(map: \"userstatustypelu_pk\") @db.Decimal(3, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\n// Explicit definition for the user-email join table\nmodel user_email_xref {\n user_id Decimal @db.Decimal(10, 0)\n email_id Decimal @db.Decimal(10, 0)\n is_primary Boolean // Assuming boolean based on name, adjust if Decimal(1,0)\n status_id Decimal @db.Decimal(3, 0) // Assuming relates to email_status_lu\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_user_fk\") // Define relation\n email email @relation(fields: [email_id], references: [email_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_email_fk\") // Define relation\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id]) // Optional relation to status lookup\n\n @@id([user_id, email_id], map: \"user_email_xref_pkey\") // Define composite primary key\n @@index([email_id], map: \"user_email_xref_email_idx\")\n @@index([user_id, status_id])\n @@schema(\"identity\")\n}\n\n// -----------------------------------------\n// (Migrated from MySQL DDL)\n// -----------------------------------------\n\nmodel Client {\n id Int @id @default(autoincrement()) @map(\"id\")\n clientId String @unique @map(\"client_id\")\n name String\n redirectUri String? @map(\"redirect_uri\") @db.VarChar(8192)\n secret String?\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0) // Use Timestamp(0) if you need second precision like MySQL datetime\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n @@map(\"client\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel Role {\n id Int @id @default(autoincrement()) @map(\"id\")\n name String @unique @db.VarChar(45)\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n roleAssignments RoleAssignment[] // Relation field\n\n @@map(\"role\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel RoleAssignment {\n id Int @id @default(autoincrement()) @map(\"id\")\n roleId Int @map(\"role_id\")\n subjectId Int @map(\"subject_id\")\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n subjectType Int @default(1) @map(\"subject_type\")\n\n role Role @relation(fields: [roleId], references: [id], map: \"role_id\") // Relation field\n\n @@unique([roleId, subjectId, subjectType], map: \"role_subject_id_subject_type\")\n @@index([subjectId], map: \"subject_id_idx\")\n @@index([roleId], map: \"role_id_idx\")\n @@index([subjectId, subjectType])\n @@map(\"role_assignment\")\n @@schema(\"identity\")\n}\n", - "inlineSchemaHash": "146549dc4277ba3db4608942c2cae9f5d81439e3f0cff4d805cba070b9eac179", + "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n previewFeatures = [\"multiSchema\"]\n}\n\ngenerator externalClient {\n provider = \"prisma-client-js\"\n output = \"../packages/identity-prisma-client\"\n binaryTargets = [\"native\", \"debian-openssl-3.0.x\"]\n}\n\ndatasource db {\n provider = \"postgresql\"\n url = env(\"IDENTITY_DB_URL\")\n schemas = [\"identity\"]\n}\n\n// IDENTITY SCHEMA MODELS\n// (Introspected from existing database)\n// -----------------------------------------\n\nmodel achievement_type_lu {\n achievement_type_id Decimal @id(map: \"achv_type_lu_pkey\") @db.Decimal(5, 0)\n achievement_type_desc String @db.VarChar(64)\n user_achievement user_achievement[]\n\n @@schema(\"identity\")\n}\n\nmodel country {\n country_code String @id @db.VarChar(3)\n country_name String @db.VarChar(40)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n participating Decimal? @db.Decimal(1, 0)\n default_taxform_id Decimal? @db.Decimal(10, 0)\n longitude Decimal? @db.Decimal(10, 7)\n latitude Decimal? @db.Decimal(10, 7)\n region String? @db.VarChar(64)\n iso_name String? @db.VarChar(128)\n iso_alpha2_code String? @db.VarChar(2)\n iso_alpha3_code String? @db.VarChar(3)\n\n @@schema(\"identity\")\n}\n\nmodel dice_connection {\n id Int @id(map: \"dice_connection_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n connection String? @db.VarChar(50)\n accepted Boolean @default(false)\n created_at DateTime @default(now()) @db.Timestamp(6)\n short_url String? @db.VarChar(100)\n con_created_at DateTime? @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([connection])\n @@schema(\"identity\")\n}\n\nmodel email {\n user_id Decimal? @db.Decimal(10, 0)\n email_id Decimal @id(map: \"u110_23\") @default(dbgenerated(\"nextval('sequence_email_seq'::regclass)\")) @db.Decimal(10, 0)\n email_type_id Decimal? @db.Decimal(5, 0)\n address String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n primary_ind Decimal? @db.Decimal(1, 0)\n status_id Decimal? @db.Decimal(3, 0)\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailstatuslu_fk\")\n email_type_lu email_type_lu? @relation(fields: [email_type_id], references: [email_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"email_emailtypelu_fk\")\n user_email_xref user_email_xref[]\n user user? @relation(\"UserToEmail\", fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@index([user_id, primary_ind], map: \"email_user_id_idx\")\n @@index([user_id, email_type_id, status_id])\n @@index([address, status_id])\n @@schema(\"identity\")\n}\n\nmodel email_status_lu {\n status_id Decimal @id(map: \"email_status_lu_pk\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n user_email_xref user_email_xref[] // Added back-relation to user_email_xref\n\n @@schema(\"identity\")\n}\n\nmodel email_type_lu {\n email_type_id Decimal @id(map: \"email_type_lu_pk\") @db.Decimal(5, 0)\n email_type_desc String? @db.VarChar(100)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n email email[]\n\n @@schema(\"identity\")\n}\n\nmodel id_sequences {\n name String @id @db.VarChar(254)\n next_block_start Decimal @db.Decimal(12, 0)\n block_size Decimal @db.Decimal(10, 0)\n exhausted Decimal @default(0) @db.Decimal(1, 0)\n\n @@schema(\"identity\")\n}\n\nmodel invalid_handles {\n invalid_handle_id Int @id(map: \"pk_invalid_hand556\")\n invalid_handle String @db.VarChar(20)\n\n @@schema(\"identity\")\n}\n\nmodel locked_handles {\n locked_handle_id Int @id(map: \"pk_locked_handles\") @default(autoincrement())\n locked_handle String @db.VarChar(50)\n locked_handle_lower String @unique(map: \"locked_handles_locked_handle_lower_key\") @db.VarChar(50)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n\n @@schema(\"identity\")\n}\n\nmodel security_groups {\n group_id Decimal @id(map: \"pk_security_groups\") @db.Decimal(12, 0)\n description String @db.VarChar(254)\n challenge_group_ind Int @default(0) @db.SmallInt\n create_user_id Decimal? @db.Decimal(12, 0)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_status_lu {\n security_status_id Decimal @id(map: \"securitystatuslu_pkey\") @db.Decimal(3, 0)\n status_desc String? @db.VarChar(200)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel security_user {\n login_id Decimal @id(map: \"pk_security_user\") @db.Decimal(12, 0)\n user_id String @unique(map: \"security_user_i2\") @db.VarChar(50)\n password String @db.VarChar(300)\n create_user_id Decimal? @db.Decimal(12, 0)\n modify_date DateTime? @db.Timestamp(6)\n user_group_xref user_group_xref[]\n\n @@schema(\"identity\")\n}\n\nmodel social_login_provider {\n social_login_provider_id Decimal @id(map: \"social_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n user_social_login user_social_login[]\n\n @@schema(\"identity\")\n}\n\nmodel sso_login_provider {\n sso_login_provider_id Decimal @id(map: \"sso_provider_prkey\") @db.Decimal(10, 0)\n name String? @db.VarChar(50)\n type String @db.VarChar(50)\n identify_email_enabled Boolean @default(true)\n identify_handle_enabled Boolean @default(true)\n user_sso_login user_sso_login[]\n\n @@schema(\"identity\")\n}\n\nmodel user {\n user_id Decimal @id(map: \"u175_45\") @default(dbgenerated(\"nextval('sequence_user_seq'::regclass)\")) @db.Decimal(10, 0)\n first_name String? @db.VarChar(64)\n last_name String? @db.VarChar(64)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n handle String @db.VarChar(50)\n last_login DateTime? @db.Timestamp(6)\n status String @db.VarChar(3)\n activation_code String? @db.VarChar(32)\n middle_name String? @db.VarChar(64)\n handle_lower String? @db.VarChar(50)\n timezone_id Decimal? @db.Decimal(5, 0)\n last_site_hit_date DateTime? @db.Timestamp(6)\n name_in_another_language String? @db.VarChar(64)\n password String? @db.VarChar(16)\n open_id String? @db.VarChar(200)\n reg_source String? @db.VarChar(20)\n utm_source String? @db.VarChar(50)\n utm_medium String? @db.VarChar(50)\n utm_campaign String? @db.VarChar(50)\n dice_connection dice_connection?\n user_2fa user_2fa?\n user_achievement user_achievement[]\n user_otp_email user_otp_email[]\n user_social_login user_social_login[]\n user_sso_login user_sso_login[]\n user_status user_status[]\n user_email_xref user_email_xref[]\n emails email[] @relation(\"UserToEmail\")\n\n @@index([activation_code], map: \"user_activ_code_idx\")\n @@index([handle])\n @@index([handle_lower], map: \"user_lower_handle_idx\")\n @@index([open_id])\n @@index([status, handle_lower])\n @@schema(\"identity\")\n}\n\nmodel user_2fa {\n id Int @id(map: \"user_2fa_pk\") @default(autoincrement())\n user_id Decimal @unique @db.Decimal(10, 0)\n mfa_enabled Boolean @default(false)\n dice_enabled Boolean @default(false)\n created_by Decimal @db.Decimal(10, 0)\n created_at DateTime @default(now()) @db.Timestamp(6)\n modified_by Decimal @db.Decimal(10, 0)\n modified_at DateTime @default(now()) @db.Timestamp(6)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@schema(\"identity\")\n}\n\n/// The underlying table does not contain a valid unique identifier and can therefore currently not be handled by Prisma Client.\nmodel user_achievement {\n user_id Decimal @db.Decimal(10, 0) // Made non-nullable for PK\n achievement_date DateTime @db.Date\n achievement_type_id Decimal @db.Decimal(5, 0)\n description String? @db.VarChar(255)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n achievement_type_lu achievement_type_lu @relation(fields: [achievement_type_id], references: [achievement_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_type_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"achv_user_fk\") // Made user relation non-nullable as user_id is non-nullable\n\n // Define composite primary key\n @@id([user_id, achievement_type_id], map: \"user_achievement_pkey\") // Added @@id\n // @@ignore // Removed @@ignore\n @@schema(\"identity\")\n}\n\nmodel user_group_xref {\n user_group_id Decimal @id(map: \"pk_user_group_xref\") @default(dbgenerated(\"nextval('sequence_user_group_seq'::regclass)\")) @db.Decimal(12, 0)\n login_id Decimal? @db.Decimal(12, 0)\n group_id Decimal? @db.Decimal(12, 0)\n create_user_id Decimal? @db.Decimal(12, 0)\n security_status_id Decimal? @db.Decimal(3, 0)\n create_date DateTime? @default(now()) @db.Timestamp(6)\n security_user security_user? @relation(fields: [login_id], references: [login_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref1\")\n security_groups security_groups? @relation(fields: [group_id], references: [group_id], onDelete: Cascade, onUpdate: NoAction, map: \"fk_user_grp_xref2\")\n security_status_lu security_status_lu? @relation(fields: [security_status_id], references: [security_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"usergroupxref_status_fk\")\n\n @@unique([login_id, group_id], map: \"user_grp_xref_i2\")\n @@schema(\"identity\")\n}\n\nmodel user_otp_email {\n id Int @id(map: \"user_otp_email_pk\") @default(autoincrement())\n user_id Decimal @db.Decimal(10, 0)\n mode Int @db.SmallInt\n otp String @db.VarChar(6)\n expire_at DateTime @db.Timestamp(6)\n resend Boolean @default(false)\n fail_count Int @default(0) @db.SmallInt\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction)\n\n @@unique([user_id, mode])\n @@schema(\"identity\")\n}\n\nmodel user_social_login {\n social_user_id String? @db.VarChar(254)\n user_id Decimal @db.Decimal(10, 0)\n social_login_provider_id Decimal @db.Decimal(10, 0)\n social_user_name String @db.VarChar(100)\n social_email String? @db.VarChar(100)\n social_email_verified Boolean?\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @db.Timestamp(6)\n social_login_provider social_login_provider @relation(fields: [social_login_provider_id], references: [social_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_social_user_fk\")\n\n @@id([user_id, social_login_provider_id], map: \"user_social_prkey\")\n @@index([social_user_id, social_login_provider_id])\n @@schema(\"identity\")\n}\n\nmodel user_sso_login {\n user_id Decimal @db.Decimal(10, 0)\n sso_user_id String @db.VarChar(100)\n sso_user_name String? @db.VarChar(100)\n provider_id Decimal @db.Decimal(10, 0)\n email String? @db.VarChar(100)\n sso_login_provider sso_login_provider @relation(fields: [provider_id], references: [sso_login_provider_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_provider_fk\")\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_sso_login_user_fk\")\n\n @@id([user_id, provider_id], map: \"user_sso_prkey\") // Primary key\n @@index([sso_user_id, provider_id], map: \"idx_user_social_login_sso_user_id_provider_id\") // Index only, NOT unique\n @@schema(\"identity\")\n}\n\nmodel user_status {\n user_id Decimal @db.Decimal(10, 0)\n user_status_type_id Decimal @db.Decimal(3, 0)\n user_status_id Decimal? @db.Decimal(5, 0)\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_user_fk\")\n user_status_lu user_status_lu? @relation(fields: [user_status_id], references: [user_status_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatuslu_fk\")\n user_status_type_lu user_status_type_lu @relation(fields: [user_status_type_id], references: [user_status_type_id], onDelete: NoAction, onUpdate: NoAction, map: \"userstatus_userstatustype_fk\")\n\n @@id([user_id, user_status_type_id], map: \"userstatus_pk\")\n @@schema(\"identity\")\n}\n\nmodel user_status_lu {\n user_status_id Decimal @id(map: \"u113_26\") @db.Decimal(5, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\nmodel user_status_type_lu {\n user_status_type_id Decimal @id(map: \"userstatustypelu_pk\") @db.Decimal(3, 0)\n description String? @db.VarChar(100)\n user_status user_status[]\n\n @@schema(\"identity\")\n}\n\n// Explicit definition for the user-email join table\nmodel user_email_xref {\n user_id Decimal @db.Decimal(10, 0)\n email_id Decimal @db.Decimal(10, 0)\n is_primary Boolean // Assuming boolean based on name, adjust if Decimal(1,0)\n status_id Decimal @db.Decimal(3, 0) // Assuming relates to email_status_lu\n create_date DateTime? @default(now()) @db.Timestamp(6)\n modify_date DateTime? @default(now()) @db.Timestamp(6)\n\n user user @relation(fields: [user_id], references: [user_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_user_fk\") // Define relation\n email email @relation(fields: [email_id], references: [email_id], onDelete: NoAction, onUpdate: NoAction, map: \"user_email_xref_email_fk\") // Define relation\n email_status_lu email_status_lu? @relation(fields: [status_id], references: [status_id]) // Optional relation to status lookup\n\n @@id([user_id, email_id], map: \"user_email_xref_pkey\") // Define composite primary key\n @@index([email_id], map: \"user_email_xref_email_idx\")\n @@index([user_id, status_id])\n @@schema(\"identity\")\n}\n\n// -----------------------------------------\n// (Migrated from MySQL DDL)\n// -----------------------------------------\n\nmodel Client {\n id Int @id @default(autoincrement()) @map(\"id\")\n clientId String @unique @map(\"client_id\")\n name String\n redirectUri String? @map(\"redirect_uri\") @db.VarChar(8192)\n secret String?\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0) // Use Timestamp(0) if you need second precision like MySQL datetime\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n @@map(\"client\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel Role {\n id Int @id @default(autoincrement()) @map(\"id\")\n name String @unique @db.VarChar(45)\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n\n roleAssignments RoleAssignment[] // Relation field\n\n @@map(\"role\") // Map model name to table name\n @@schema(\"identity\")\n}\n\nmodel RoleAssignment {\n id Int @id @default(autoincrement()) @map(\"id\")\n roleId Int @map(\"role_id\")\n subjectId Int @map(\"subject_id\")\n createdBy Int?\n createdAt DateTime? @db.Timestamp(0)\n modifiedBy Int?\n modifiedAt DateTime? @db.Timestamp(0)\n subjectType Int @default(1) @map(\"subject_type\")\n\n role Role @relation(fields: [roleId], references: [id], map: \"role_id\") // Relation field\n\n @@unique([roleId, subjectId, subjectType], map: \"role_subject_id_subject_type\")\n @@index([subjectId], map: \"subject_id_idx\")\n @@index([roleId], map: \"role_id_idx\")\n @@index([subjectId, subjectType])\n @@map(\"role_assignment\")\n @@schema(\"identity\")\n}\n", + "inlineSchemaHash": "00a34cea140eb65386c378bb3a6f18df674a5c703111f0621f0e67f3aedd647e", "copyEngine": true } config.dirname = '/' -config.runtimeDataModel = JSON.parse("{\"models\":{\"achievement_type_lu\":{\"fields\":[{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"achievement_type_desc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_achievement\",\"kind\":\"object\",\"type\":\"user_achievement\",\"relationName\":\"achievement_type_luTouser_achievement\"}],\"dbName\":null},\"country\":{\"fields\":[{\"name\":\"country_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"participating\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"default_taxform_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"region\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"iso_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"iso_alpha2_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"iso_alpha3_code\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"dice_connection\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"connection\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accepted\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"short_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"con_created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"dice_connectionTouser\"}],\"dbName\":null},\"email\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"primary_ind\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"type\":\"email_status_lu\",\"relationName\":\"emailToemail_status_lu\"},{\"name\":\"email_type_lu\",\"kind\":\"object\",\"type\":\"email_type_lu\",\"relationName\":\"emailToemail_type_lu\"},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"type\":\"user_email_xref\",\"relationName\":\"emailTouser_email_xref\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"UserToEmail\"}],\"dbName\":null},\"email_status_lu\":{\"fields\":[{\"name\":\"status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"email\",\"kind\":\"object\",\"type\":\"email\",\"relationName\":\"emailToemail_status_lu\"},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"type\":\"user_email_xref\",\"relationName\":\"email_status_luTouser_email_xref\"}],\"dbName\":null},\"email_type_lu\":{\"fields\":[{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_type_desc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"email\",\"kind\":\"object\",\"type\":\"email\",\"relationName\":\"emailToemail_type_lu\"}],\"dbName\":null},\"id_sequences\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"next_block_start\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"block_size\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"exhausted\",\"kind\":\"scalar\",\"type\":\"Decimal\"}],\"dbName\":null},\"invalid_handles\":{\"fields\":[{\"name\":\"invalid_handle_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"invalid_handle\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"security_groups\":{\"fields\":[{\"name\":\"group_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge_group_ind\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"type\":\"user_group_xref\",\"relationName\":\"security_groupsTouser_group_xref\"}],\"dbName\":null},\"security_status_lu\":{\"fields\":[{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"type\":\"user_group_xref\",\"relationName\":\"security_status_luTouser_group_xref\"}],\"dbName\":null},\"security_user\":{\"fields\":[{\"name\":\"login_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"type\":\"user_group_xref\",\"relationName\":\"security_userTouser_group_xref\"}],\"dbName\":null},\"social_login_provider\":{\"fields\":[{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_social_login\",\"kind\":\"object\",\"type\":\"user_social_login\",\"relationName\":\"social_login_providerTouser_social_login\"}],\"dbName\":null},\"sso_login_provider\":{\"fields\":[{\"name\":\"sso_login_provider_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identify_email_enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"identify_handle_enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"type\":\"user_sso_login\",\"relationName\":\"sso_login_providerTouser_sso_login\"}],\"dbName\":null},\"user\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"handle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_login\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activation_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"middle_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"handle_lower\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timezone_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"last_site_hit_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"name_in_another_language\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"open_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reg_source\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"utm_source\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"utm_medium\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"utm_campaign\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"dice_connection\",\"kind\":\"object\",\"type\":\"dice_connection\",\"relationName\":\"dice_connectionTouser\"},{\"name\":\"user_2fa\",\"kind\":\"object\",\"type\":\"user_2fa\",\"relationName\":\"userTouser_2fa\"},{\"name\":\"user_achievement\",\"kind\":\"object\",\"type\":\"user_achievement\",\"relationName\":\"userTouser_achievement\"},{\"name\":\"user_otp_email\",\"kind\":\"object\",\"type\":\"user_otp_email\",\"relationName\":\"userTouser_otp_email\"},{\"name\":\"user_social_login\",\"kind\":\"object\",\"type\":\"user_social_login\",\"relationName\":\"userTouser_social_login\"},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"type\":\"user_sso_login\",\"relationName\":\"userTouser_sso_login\"},{\"name\":\"user_status\",\"kind\":\"object\",\"type\":\"user_status\",\"relationName\":\"userTouser_status\"},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"type\":\"user_email_xref\",\"relationName\":\"userTouser_email_xref\"},{\"name\":\"emails\",\"kind\":\"object\",\"type\":\"email\",\"relationName\":\"UserToEmail\"}],\"dbName\":null},\"user_2fa\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"mfa_enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"dice_enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_by\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_2fa\"}],\"dbName\":null},\"user_achievement\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"achievement_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"achievement_type_lu\",\"kind\":\"object\",\"type\":\"achievement_type_lu\",\"relationName\":\"achievement_type_luTouser_achievement\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_achievement\"}],\"dbName\":null},\"user_group_xref\":{\"fields\":[{\"name\":\"user_group_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"login_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"group_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"security_user\",\"kind\":\"object\",\"type\":\"security_user\",\"relationName\":\"security_userTouser_group_xref\"},{\"name\":\"security_groups\",\"kind\":\"object\",\"type\":\"security_groups\",\"relationName\":\"security_groupsTouser_group_xref\"},{\"name\":\"security_status_lu\",\"kind\":\"object\",\"type\":\"security_status_lu\",\"relationName\":\"security_status_luTouser_group_xref\"}],\"dbName\":null},\"user_otp_email\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"mode\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"otp\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expire_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"resend\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"fail_count\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_otp_email\"}],\"dbName\":null},\"user_social_login\":{\"fields\":[{\"name\":\"social_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"social_user_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"social_email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"social_email_verified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"social_login_provider\",\"kind\":\"object\",\"type\":\"social_login_provider\",\"relationName\":\"social_login_providerTouser_social_login\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_social_login\"}],\"dbName\":null},\"user_sso_login\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"sso_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sso_user_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sso_login_provider\",\"kind\":\"object\",\"type\":\"sso_login_provider\",\"relationName\":\"sso_login_providerTouser_sso_login\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_sso_login\"}],\"dbName\":null},\"user_status\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_status\"},{\"name\":\"user_status_lu\",\"kind\":\"object\",\"type\":\"user_status_lu\",\"relationName\":\"user_statusTouser_status_lu\"},{\"name\":\"user_status_type_lu\",\"kind\":\"object\",\"type\":\"user_status_type_lu\",\"relationName\":\"user_statusTouser_status_type_lu\"}],\"dbName\":null},\"user_status_lu\":{\"fields\":[{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_status\",\"kind\":\"object\",\"type\":\"user_status\",\"relationName\":\"user_statusTouser_status_lu\"}],\"dbName\":null},\"user_status_type_lu\":{\"fields\":[{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_status\",\"kind\":\"object\",\"type\":\"user_status\",\"relationName\":\"user_statusTouser_status_type_lu\"}],\"dbName\":null},\"user_email_xref\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"is_primary\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_email_xref\"},{\"name\":\"email\",\"kind\":\"object\",\"type\":\"email\",\"relationName\":\"emailTouser_email_xref\"},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"type\":\"email_status_lu\",\"relationName\":\"email_status_luTouser_email_xref\"}],\"dbName\":null},\"Client\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"id\"},{\"name\":\"clientId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"client_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"redirectUri\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"redirect_uri\"},{\"name\":\"secret\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"client\"},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"roleAssignments\",\"kind\":\"object\",\"type\":\"RoleAssignment\",\"relationName\":\"RoleToRoleAssignment\"}],\"dbName\":\"role\"},\"RoleAssignment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"id\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"role_id\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"subject_id\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"subject_type\"},{\"name\":\"role\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RoleToRoleAssignment\"}],\"dbName\":\"role_assignment\"}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"achievement_type_lu\":{\"fields\":[{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"achievement_type_desc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_achievement\",\"kind\":\"object\",\"type\":\"user_achievement\",\"relationName\":\"achievement_type_luTouser_achievement\"}],\"dbName\":null},\"country\":{\"fields\":[{\"name\":\"country_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"country_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"participating\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"default_taxform_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"longitude\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"latitude\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"region\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"iso_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"iso_alpha2_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"iso_alpha3_code\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"dice_connection\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"connection\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accepted\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"short_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"con_created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"dice_connectionTouser\"}],\"dbName\":null},\"email\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"primary_ind\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"type\":\"email_status_lu\",\"relationName\":\"emailToemail_status_lu\"},{\"name\":\"email_type_lu\",\"kind\":\"object\",\"type\":\"email_type_lu\",\"relationName\":\"emailToemail_type_lu\"},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"type\":\"user_email_xref\",\"relationName\":\"emailTouser_email_xref\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"UserToEmail\"}],\"dbName\":null},\"email_status_lu\":{\"fields\":[{\"name\":\"status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"email\",\"kind\":\"object\",\"type\":\"email\",\"relationName\":\"emailToemail_status_lu\"},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"type\":\"user_email_xref\",\"relationName\":\"email_status_luTouser_email_xref\"}],\"dbName\":null},\"email_type_lu\":{\"fields\":[{\"name\":\"email_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_type_desc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"email\",\"kind\":\"object\",\"type\":\"email\",\"relationName\":\"emailToemail_type_lu\"}],\"dbName\":null},\"id_sequences\":{\"fields\":[{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"next_block_start\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"block_size\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"exhausted\",\"kind\":\"scalar\",\"type\":\"Decimal\"}],\"dbName\":null},\"invalid_handles\":{\"fields\":[{\"name\":\"invalid_handle_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"invalid_handle\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":null},\"locked_handles\":{\"fields\":[{\"name\":\"locked_handle_id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"locked_handle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"locked_handle_lower\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":null},\"security_groups\":{\"fields\":[{\"name\":\"group_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"challenge_group_ind\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"type\":\"user_group_xref\",\"relationName\":\"security_groupsTouser_group_xref\"}],\"dbName\":null},\"security_status_lu\":{\"fields\":[{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"status_desc\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"type\":\"user_group_xref\",\"relationName\":\"security_status_luTouser_group_xref\"}],\"dbName\":null},\"security_user\":{\"fields\":[{\"name\":\"login_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_group_xref\",\"kind\":\"object\",\"type\":\"user_group_xref\",\"relationName\":\"security_userTouser_group_xref\"}],\"dbName\":null},\"social_login_provider\":{\"fields\":[{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_social_login\",\"kind\":\"object\",\"type\":\"user_social_login\",\"relationName\":\"social_login_providerTouser_social_login\"}],\"dbName\":null},\"sso_login_provider\":{\"fields\":[{\"name\":\"sso_login_provider_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identify_email_enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"identify_handle_enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"type\":\"user_sso_login\",\"relationName\":\"sso_login_providerTouser_sso_login\"}],\"dbName\":null},\"user\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"handle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_login\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activation_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"middle_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"handle_lower\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"timezone_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"last_site_hit_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"name_in_another_language\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"open_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reg_source\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"utm_source\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"utm_medium\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"utm_campaign\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"dice_connection\",\"kind\":\"object\",\"type\":\"dice_connection\",\"relationName\":\"dice_connectionTouser\"},{\"name\":\"user_2fa\",\"kind\":\"object\",\"type\":\"user_2fa\",\"relationName\":\"userTouser_2fa\"},{\"name\":\"user_achievement\",\"kind\":\"object\",\"type\":\"user_achievement\",\"relationName\":\"userTouser_achievement\"},{\"name\":\"user_otp_email\",\"kind\":\"object\",\"type\":\"user_otp_email\",\"relationName\":\"userTouser_otp_email\"},{\"name\":\"user_social_login\",\"kind\":\"object\",\"type\":\"user_social_login\",\"relationName\":\"userTouser_social_login\"},{\"name\":\"user_sso_login\",\"kind\":\"object\",\"type\":\"user_sso_login\",\"relationName\":\"userTouser_sso_login\"},{\"name\":\"user_status\",\"kind\":\"object\",\"type\":\"user_status\",\"relationName\":\"userTouser_status\"},{\"name\":\"user_email_xref\",\"kind\":\"object\",\"type\":\"user_email_xref\",\"relationName\":\"userTouser_email_xref\"},{\"name\":\"emails\",\"kind\":\"object\",\"type\":\"email\",\"relationName\":\"UserToEmail\"}],\"dbName\":null},\"user_2fa\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"mfa_enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"dice_enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_by\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modified_by\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"modified_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_2fa\"}],\"dbName\":null},\"user_achievement\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"achievement_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"achievement_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"achievement_type_lu\",\"kind\":\"object\",\"type\":\"achievement_type_lu\",\"relationName\":\"achievement_type_luTouser_achievement\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_achievement\"}],\"dbName\":null},\"user_group_xref\":{\"fields\":[{\"name\":\"user_group_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"login_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"group_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"create_user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"security_status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"security_user\",\"kind\":\"object\",\"type\":\"security_user\",\"relationName\":\"security_userTouser_group_xref\"},{\"name\":\"security_groups\",\"kind\":\"object\",\"type\":\"security_groups\",\"relationName\":\"security_groupsTouser_group_xref\"},{\"name\":\"security_status_lu\",\"kind\":\"object\",\"type\":\"security_status_lu\",\"relationName\":\"security_status_luTouser_group_xref\"}],\"dbName\":null},\"user_otp_email\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"mode\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"otp\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expire_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"resend\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"fail_count\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_otp_email\"}],\"dbName\":null},\"user_social_login\":{\"fields\":[{\"name\":\"social_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"social_login_provider_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"social_user_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"social_email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"social_email_verified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"social_login_provider\",\"kind\":\"object\",\"type\":\"social_login_provider\",\"relationName\":\"social_login_providerTouser_social_login\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_social_login\"}],\"dbName\":null},\"user_sso_login\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"sso_user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sso_user_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sso_login_provider\",\"kind\":\"object\",\"type\":\"sso_login_provider\",\"relationName\":\"sso_login_providerTouser_sso_login\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_sso_login\"}],\"dbName\":null},\"user_status\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_status\"},{\"name\":\"user_status_lu\",\"kind\":\"object\",\"type\":\"user_status_lu\",\"relationName\":\"user_statusTouser_status_lu\"},{\"name\":\"user_status_type_lu\",\"kind\":\"object\",\"type\":\"user_status_type_lu\",\"relationName\":\"user_statusTouser_status_type_lu\"}],\"dbName\":null},\"user_status_lu\":{\"fields\":[{\"name\":\"user_status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_status\",\"kind\":\"object\",\"type\":\"user_status\",\"relationName\":\"user_statusTouser_status_lu\"}],\"dbName\":null},\"user_status_type_lu\":{\"fields\":[{\"name\":\"user_status_type_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_status\",\"kind\":\"object\",\"type\":\"user_status\",\"relationName\":\"user_statusTouser_status_type_lu\"}],\"dbName\":null},\"user_email_xref\":{\"fields\":[{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"email_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"is_primary\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"status_id\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"create_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modify_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"user\",\"relationName\":\"userTouser_email_xref\"},{\"name\":\"email\",\"kind\":\"object\",\"type\":\"email\",\"relationName\":\"emailTouser_email_xref\"},{\"name\":\"email_status_lu\",\"kind\":\"object\",\"type\":\"email_status_lu\",\"relationName\":\"email_status_luTouser_email_xref\"}],\"dbName\":null},\"Client\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"id\"},{\"name\":\"clientId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"client_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"redirectUri\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"redirect_uri\"},{\"name\":\"secret\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"client\"},\"Role\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"roleAssignments\",\"kind\":\"object\",\"type\":\"RoleAssignment\",\"relationName\":\"RoleToRoleAssignment\"}],\"dbName\":\"role\"},\"RoleAssignment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"id\"},{\"name\":\"roleId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"role_id\"},{\"name\":\"subjectId\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"subject_id\"},{\"name\":\"createdBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"modifiedBy\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"modifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"subjectType\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"subject_type\"},{\"name\":\"role\",\"kind\":\"object\",\"type\":\"Role\",\"relationName\":\"RoleToRoleAssignment\"}],\"dbName\":\"role_assignment\"}},\"enums\":{},\"types\":{}}") defineDmmfProperty(exports.Prisma, config.runtimeDataModel) config.engineWasm = { getRuntime: async () => require('./query_engine_bg.js'), diff --git a/prisma/member/generated/member/edge.js b/prisma/member/generated/member/edge.js index d9a33e9..5f19a90 100644 --- a/prisma/member/generated/member/edge.js +++ b/prisma/member/generated/member/edge.js @@ -177,7 +177,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/Users/hentrymartin/development/identity-api-v6/prisma/member/generated/member", + "value": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/member/generated/member", "fromEnvVar": null }, "config": { @@ -186,12 +186,12 @@ const config = { "binaryTargets": [ { "fromEnvVar": null, - "value": "darwin-arm64", + "value": "debian-openssl-3.0.x", "native": true } ], "previewFeatures": [], - "sourceFilePath": "/Users/hentrymartin/development/identity-api-v6/prisma/member/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/member/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { diff --git a/prisma/member/generated/member/index.js b/prisma/member/generated/member/index.js index a509970..d521ca0 100644 --- a/prisma/member/generated/member/index.js +++ b/prisma/member/generated/member/index.js @@ -178,7 +178,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/Users/hentrymartin/development/identity-api-v6/prisma/member/generated/member", + "value": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/member/generated/member", "fromEnvVar": null }, "config": { @@ -187,12 +187,12 @@ const config = { "binaryTargets": [ { "fromEnvVar": null, - "value": "darwin-arm64", + "value": "debian-openssl-3.0.x", "native": true } ], "previewFeatures": [], - "sourceFilePath": "/Users/hentrymartin/development/identity-api-v6/prisma/member/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/member/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { @@ -254,8 +254,8 @@ exports.PrismaClient = PrismaClient Object.assign(exports, Prisma) // file annotations for bundling tools to include these files -path.join(__dirname, "libquery_engine-darwin-arm64.dylib.node"); -path.join(process.cwd(), "prisma/member/generated/member/libquery_engine-darwin-arm64.dylib.node") +path.join(__dirname, "libquery_engine-debian-openssl-3.0.x.so.node"); +path.join(process.cwd(), "prisma/member/generated/member/libquery_engine-debian-openssl-3.0.x.so.node") // file annotations for bundling tools to include these files path.join(__dirname, "schema.prisma"); path.join(process.cwd(), "prisma/member/generated/member/schema.prisma") diff --git a/prisma/member/generated/member/wasm.js b/prisma/member/generated/member/wasm.js index 4946719..18239e2 100644 --- a/prisma/member/generated/member/wasm.js +++ b/prisma/member/generated/member/wasm.js @@ -177,7 +177,7 @@ const config = { "value": "prisma-client-js" }, "output": { - "value": "/Users/hentrymartin/development/identity-api-v6/prisma/member/generated/member", + "value": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/member/generated/member", "fromEnvVar": null }, "config": { @@ -186,12 +186,12 @@ const config = { "binaryTargets": [ { "fromEnvVar": null, - "value": "darwin-arm64", + "value": "debian-openssl-3.0.x", "native": true } ], "previewFeatures": [], - "sourceFilePath": "/Users/hentrymartin/development/identity-api-v6/prisma/member/schema.prisma", + "sourceFilePath": "/home/jmgasper/Documents/Git/v6/identity-api-v6/prisma/member/schema.prisma", "isCustomOutput": true }, "relativeEnvPaths": { diff --git a/prisma/migrations/20260323120000_locked_handles/migration.sql b/prisma/migrations/20260323120000_locked_handles/migration.sql new file mode 100644 index 0000000..64dbb2f --- /dev/null +++ b/prisma/migrations/20260323120000_locked_handles/migration.sql @@ -0,0 +1,42 @@ +-- CreateTable +CREATE TABLE "identity"."locked_handles" ( + "locked_handle_id" SERIAL NOT NULL, + "locked_handle" VARCHAR(50) NOT NULL, + "locked_handle_lower" VARCHAR(50) NOT NULL, + "create_date" TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "pk_locked_handles" PRIMARY KEY ("locked_handle_id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "locked_handles_locked_handle_lower_key" ON "identity"."locked_handles"("locked_handle_lower"); + +-- CreateFunction +CREATE OR REPLACE FUNCTION "identity"."lock_deleted_handle"() +RETURNS TRIGGER +LANGUAGE plpgsql +AS $$ +BEGIN + IF OLD.handle IS NULL + OR OLD.handle LIKE 'DELETED_USER_%' + OR NEW.handle IS NULL + OR NEW.handle NOT LIKE 'DELETED_USER_%' THEN + RETURN NEW; + END IF; + + INSERT INTO "identity"."locked_handles" ("locked_handle", "locked_handle_lower") + VALUES (OLD.handle, LOWER(OLD.handle)) + ON CONFLICT ("locked_handle_lower") DO NOTHING; + + RETURN NEW; +END; +$$; + +-- CreateTrigger +DROP TRIGGER IF EXISTS "trg_lock_deleted_handle" ON "identity"."user"; + +CREATE TRIGGER "trg_lock_deleted_handle" +AFTER UPDATE OF "handle" ON "identity"."user" +FOR EACH ROW +WHEN (OLD."handle" IS DISTINCT FROM NEW."handle") +EXECUTE FUNCTION "identity"."lock_deleted_handle"(); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 2a629c9..3e22d39 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -114,6 +114,15 @@ model invalid_handles { @@schema("identity") } +model locked_handles { + locked_handle_id Int @id(map: "pk_locked_handles") @default(autoincrement()) + locked_handle String @db.VarChar(50) + locked_handle_lower String @unique(map: "locked_handles_locked_handle_lower_key") @db.VarChar(50) + create_date DateTime? @default(now()) @db.Timestamp(6) + + @@schema("identity") +} + model security_groups { group_id Decimal @id(map: "pk_security_groups") @db.Decimal(12, 0) diff --git a/src/api/user/user.controller.ts b/src/api/user/user.controller.ts index 4caaf0f..aa1cfa9 100644 --- a/src/api/user/user.controller.ts +++ b/src/api/user/user.controller.ts @@ -77,6 +77,11 @@ function mapUserToDto(user: any): DTOs.UserResponseDto { dto.lastName = user.last_name; dto.status = user.status; dto.email = user.primaryEmailAddress ?? user.email ?? undefined; + dto.ssoUserId = + user.ssoUserId ?? + user.sso_user_id ?? + user.user_sso_login?.[0]?.sso_user_id ?? + undefined; const rawEmailStatus = user.primaryEmailStatusId ?? @@ -556,9 +561,16 @@ export class UserController { type: String, required: false, description: `Request query filter, e.g.: filter=field=value[,field=value]. - Supported filters: id, handle, firstName, lastName, email, status, regSource, utmSource, utmMedium, utmCampaign, active. + Supported filters: id, handle, firstName, lastName, email, ssoUserId, status, regSource, utmSource, utmMedium, utmCampaign, active. Example: filter=active=true`, }) + @ApiQuery({ + name: 'ssoUserId', + type: String, + required: false, + description: + 'SSO user identifier search term. Matches both SSO user id and SSO user name values.', + }) @ApiQuery({ name: 'limit', type: Number, @@ -571,6 +583,19 @@ export class UserController { required: false, description: 'Offset. Default 0.', }) + @ApiQuery({ + name: 'sortBy', + type: String, + required: false, + description: + 'Optional sort field. Supports direct user fields plus joined email and SSO identifiers.', + }) + @ApiQuery({ + name: 'sortOrder', + type: String, + required: false, + description: 'Optional sort direction. Accepted values: asc, desc.', + }) @ApiResponse({ status: HttpStatus.OK, description: 'List of users found', diff --git a/src/api/user/user.service.spec.ts b/src/api/user/user.service.spec.ts index b7fbb8e..7c7c260 100644 --- a/src/api/user/user.service.spec.ts +++ b/src/api/user/user.service.spec.ts @@ -80,6 +80,7 @@ const mockPrismaOltp = { user_sso_login: { findUnique: jest.fn(), findFirst: jest.fn(), + findMany: jest.fn(), create: jest.fn(), update: jest.fn(), deleteMany: jest.fn(), @@ -123,6 +124,7 @@ const mockPrismaGroup = { }; const mockValidationService = { + validateUser: jest.fn(), validateHandle: jest.fn(), validateEmail: jest.fn(), validateCountry: jest.fn(), @@ -130,6 +132,7 @@ const mockValidationService = { validateProfile: jest.fn(), validateReferral: jest.fn(), checkEmailAvailabilityForUser: jest.fn(), + isHandleLocked: jest.fn(), // Add other methods if they are called by UserService }; @@ -491,18 +494,21 @@ describe('UserService', () => { describe('findUsers', () => { beforeEach(() => { + prismaOltp.user.count.mockResolvedValue(0); prismaOltp.email.findMany.mockResolvedValue([]); + prismaOltp.user_sso_login.findMany.mockResolvedValue([]); }); it('should find users by handle', async () => { const query: UserSearchQueryDto = { handle: 'test' }; const mockUsers = [createMockUserModel({ handle: 'test' })]; + prismaOltp.user.count.mockResolvedValue(mockUsers.length); prismaOltp.user.findMany.mockResolvedValue(mockUsers); prismaOltp.email.findMany.mockResolvedValue([]); const result = await service.findUsers(query); - expect(result).toEqual(mockUsers); + expect(result).toEqual({ total: mockUsers.length, users: mockUsers }); expect(prismaOltp.user.findMany).toHaveBeenCalledWith({ - where: { handle_lower: 'test' }, + where: { AND: [{ handle_lower: 'test' }] }, skip: 0, take: 20, }); @@ -518,27 +524,57 @@ describe('UserService', () => { status_id: true, }, }); + expect(prismaOltp.user_sso_login.findMany).toHaveBeenCalledWith({ + where: { + user_id: { in: mockUsers.map((user) => user.user_id) }, + }, + select: { + user_id: true, + sso_user_id: true, + provider_id: true, + }, + orderBy: [{ user_id: 'asc' }, { provider_id: 'asc' }], + }); }); it('should find users by email', async () => { const query: UserSearchQueryDto = { email: 'test@example.com' }; const mockUsers = [createMockUserModel({})]; + prismaOltp.user.count.mockResolvedValue(mockUsers.length); prismaOltp.user.findMany.mockResolvedValue(mockUsers); prismaOltp.email.findMany.mockResolvedValue([]); const result = await service.findUsers(query); - expect(result).toEqual(mockUsers); + expect(result).toEqual({ total: mockUsers.length, users: mockUsers }); expect(prismaOltp.user.findMany).toHaveBeenCalledWith({ where: { - user_email_xref: { - some: { - email: { - address: { - equals: 'test@example.com', - mode: 'insensitive', + AND: [ + { + OR: [ + { + user_email_xref: { + some: { + email: { + address: { + equals: 'test@example.com', + mode: 'insensitive', + }, + }, + }, + }, }, - }, + { + emails: { + some: { + address: { + equals: 'test@example.com', + mode: 'insensitive', + }, + }, + }, + }, + ], }, - }, + ], }, skip: 0, take: 20, @@ -555,17 +591,29 @@ describe('UserService', () => { status_id: true, }, }); + expect(prismaOltp.user_sso_login.findMany).toHaveBeenCalledWith({ + where: { + user_id: { in: mockUsers.map((user) => user.user_id) }, + }, + select: { + user_id: true, + sso_user_id: true, + provider_id: true, + }, + orderBy: [{ user_id: 'asc' }, { provider_id: 'asc' }], + }); }); it('should support legacy filter string for handle search', async () => { const query: UserSearchQueryDto = { filter: 'handle=TestUser' } as any; const mockUsers = [createMockUserModel({ handle: 'TestUser' })]; + prismaOltp.user.count.mockResolvedValue(mockUsers.length); prismaOltp.user.findMany.mockResolvedValue(mockUsers); prismaOltp.email.findMany.mockResolvedValue([]); const result = await service.findUsers(query); - expect(result).toEqual(mockUsers); + expect(result).toEqual({ total: mockUsers.length, users: mockUsers }); expect(prismaOltp.user.findMany).toHaveBeenCalledWith({ where: { AND: [{ handle_lower: 'testuser' }] }, skip: 0, @@ -589,6 +637,7 @@ describe('UserService', () => { const query: UserSearchQueryDto = { filter: 'email=legacy@example.com', } as any; + prismaOltp.user.count.mockResolvedValue(0); prismaOltp.user.findMany.mockResolvedValue([]); prismaOltp.email.findMany.mockResolvedValue([]); @@ -629,12 +678,14 @@ describe('UserService', () => { take: 20, }); expect(prismaOltp.email.findMany).not.toHaveBeenCalled(); + expect(prismaOltp.user_sso_login.findMany).not.toHaveBeenCalled(); }); it('should combine handle and email filters using AND logic', async () => { const query: UserSearchQueryDto = { filter: 'handle=TestUser,email=legacy@example.com', } as any; + prismaOltp.user.count.mockResolvedValue(0); prismaOltp.user.findMany.mockResolvedValue([]); prismaOltp.email.findMany.mockResolvedValue([]); @@ -676,10 +727,170 @@ describe('UserService', () => { take: 20, }); expect(prismaOltp.email.findMany).not.toHaveBeenCalled(); + expect(prismaOltp.user_sso_login.findMany).not.toHaveBeenCalled(); + }); + + it('should support SSO UserID search against sso_user_id and sso_user_name', async () => { + const query: UserSearchQueryDto = { + filter: 'ssoUserId=external-user', + } as any; + prismaOltp.user.count.mockResolvedValue(0); + prismaOltp.user.findMany.mockResolvedValue([]); + prismaOltp.email.findMany.mockResolvedValue([]); + + await service.findUsers(query); + + expect(prismaOltp.user.findMany).toHaveBeenCalledWith({ + where: { + AND: [ + { + user_sso_login: { + some: { + OR: [ + { + sso_user_id: { + equals: 'external-user', + mode: 'insensitive', + }, + }, + { + sso_user_name: { + equals: 'external-user', + mode: 'insensitive', + }, + }, + ], + }, + }, + }, + ], + }, + skip: 0, + take: 20, + }); + }); + + it('should support wildcard SSO UserID search and attach the returned sso user id', async () => { + const query: UserSearchQueryDto = { + filter: 'ssoUserId=j*@wipro.com&like=true', + } as any; + const mockUsers = [createMockUserModel({ user_id: new Decimal(44) })]; + prismaOltp.user.count.mockResolvedValue(mockUsers.length); + prismaOltp.user.findMany.mockResolvedValue(mockUsers); + prismaOltp.email.findMany.mockResolvedValue([]); + prismaOltp.user_sso_login.findMany.mockResolvedValue([ + { + user_id: mockUsers[0].user_id, + sso_user_id: 'john.smith@wipro.com', + provider_id: new Decimal(7), + }, + ]); + + const result = await service.findUsers(query); + + expect(prismaOltp.user.findMany).toHaveBeenCalledWith({ + where: { + AND: [ + { + user_sso_login: { + some: { + OR: [ + { + sso_user_id: { + startsWith: 'j', + endsWith: '@wipro.com', + mode: 'insensitive', + }, + }, + { + sso_user_name: { + startsWith: 'j', + endsWith: '@wipro.com', + mode: 'insensitive', + }, + }, + ], + }, + }, + }, + ], + }, + skip: 0, + take: 20, + }); + expect(result.total).toBe(mockUsers.length); + expect((result.users[0] as any).ssoUserId).toBe('john.smith@wipro.com'); + }); + + it('should apply direct Prisma sorting for supported user columns', async () => { + const query: UserSearchQueryDto = { + sortBy: 'handle', + sortOrder: 'desc', + }; + prismaOltp.user.count.mockResolvedValue(0); + prismaOltp.user.findMany.mockResolvedValue([]); + prismaOltp.email.findMany.mockResolvedValue([]); + + await service.findUsers(query); + + expect(prismaOltp.user.findMany).toHaveBeenCalledWith({ + where: {}, + skip: 0, + take: 20, + orderBy: [{ handle_lower: 'desc' }, { user_id: 'desc' }], + }); + expect(prismaOltp.$queryRaw).not.toHaveBeenCalled(); + }); + + it('should sort by SSO UserID using the joined sort query and preserve that order', async () => { + const query: UserSearchQueryDto = { + sortBy: 'ssoUserId', + sortOrder: 'asc', + }; + const firstUser = createMockUserModel({ user_id: new Decimal(101) }); + const secondUser = createMockUserModel({ user_id: new Decimal(202) }); + + prismaOltp.user.count.mockResolvedValue(2); + prismaOltp.$queryRaw.mockResolvedValue([ + { user_id: secondUser.user_id }, + { user_id: firstUser.user_id }, + ]); + prismaOltp.user.findMany.mockResolvedValue([firstUser, secondUser]); + prismaOltp.email.findMany.mockResolvedValue([]); + prismaOltp.user_sso_login.findMany.mockResolvedValue([ + { + user_id: secondUser.user_id, + sso_user_id: 'alpha@example.com', + provider_id: new Decimal(1), + }, + { + user_id: firstUser.user_id, + sso_user_id: 'zulu@example.com', + provider_id: new Decimal(1), + }, + ]); + + const result = await service.findUsers(query); + + expect(prismaOltp.$queryRaw).toHaveBeenCalled(); + expect(prismaOltp.user.findMany).toHaveBeenCalledWith({ + where: { + user_id: { + in: [202, 101], + }, + }, + }); + expect(result.total).toBe(2); + expect(result.users.map((user) => Number(user.user_id))).toEqual([ + 202, 101, + ]); + expect((result.users[0] as any).ssoUserId).toBe('alpha@example.com'); + expect((result.users[1] as any).ssoUserId).toBe('zulu@example.com'); }); it('should use offset and limit', async () => { const query: UserSearchQueryDto = { offset: 10, limit: 5 }; + prismaOltp.user.count.mockResolvedValue(0); prismaOltp.user.findMany.mockResolvedValue([]); prismaOltp.email.findMany.mockResolvedValue([]); await service.findUsers(query); @@ -689,11 +900,14 @@ describe('UserService', () => { take: 5, }); expect(prismaOltp.email.findMany).not.toHaveBeenCalled(); + expect(prismaOltp.user_sso_login.findMany).not.toHaveBeenCalled(); }); it('should throw InternalServerErrorException on database error', async () => { prismaOltp.user.findMany.mockRejectedValue(new Error('DB Error')); - await expect(service.findUsers({})).rejects.toThrow('DB Error'); + await expect(service.findUsers({})).rejects.toThrow( + 'Failed to search users.', + ); }); }); @@ -1071,11 +1285,13 @@ describe('UserService', () => { let mockEncode; beforeEach(() => { + validationService.validateUser.mockImplementation(() => undefined); validationService.validateHandle.mockResolvedValue({ valid: true }); validationService.validateEmail.mockResolvedValue({ valid: true }); validationService.validateCountryAndMutate.mockResolvedValue(null); validationService.validateProfile.mockResolvedValue(); validationService.validateReferral.mockResolvedValue(null); + validationService.isHandleLocked.mockResolvedValue(false); prismaOltp.$queryRaw.mockImplementation(async (query) => { const sqlString = Array.isArray(query) @@ -1274,6 +1490,18 @@ describe('UserService', () => { ); }); + it('should throw ConflictException when validation reports a taken handle', async () => { + validationService.validateHandle.mockResolvedValueOnce({ + valid: false, + reason: "Handle 'newuser' has already been taken", + reasonCode: 'ALREADY_TAKEN', + }); + + await expect(service.registerUser(createUserDto)).rejects.toThrow( + new ConflictException("Handle 'newuser' has already been taken"), + ); + }); + it('should throw InternalServerErrorException if sequence_user_seq fails', async () => { prismaOltp.$queryRaw.mockImplementation(async (query) => { const sqlString = Array.isArray(query) @@ -1453,6 +1681,7 @@ describe('UserService', () => { beforeEach(() => { validationService.validateHandle.mockResolvedValue({ valid: true }); + validationService.validateUser.mockImplementation(() => undefined); prismaOltp.user.findUnique.mockResolvedValue(mockExistingUser); prismaOltp.security_user.findUnique.mockResolvedValue({ login_id: new Decimal(userId), @@ -1513,6 +1742,20 @@ describe('UserService', () => { ).rejects.toThrow(BadRequestException); }); + it('should throw ConflictException when validation reports a taken handle', async () => { + validationService.validateHandle.mockResolvedValueOnce({ + valid: false, + reason: `Handle '${newHandle}' has already been taken`, + reasonCode: 'ALREADY_TAKEN', + }); + + await expect( + service.updateHandle(userIdString, newHandle, mockUser), + ).rejects.toThrow( + new ConflictException(`Handle '${newHandle}' has already been taken`), + ); + }); + it('should throw NotFoundException if user not found', async () => { prismaOltp.user.findUnique.mockResolvedValue(null); await expect( @@ -2241,6 +2484,7 @@ describe('UserService', () => { prismaOltp.user_sso_login.findFirst.mockResolvedValue(null); // Default: no existing SSO login prismaOltp.email.findFirst.mockResolvedValue(null); // Default: no existing email prismaOltp.user.findFirst.mockResolvedValue(null); // Default: no existing user by handle + validationService.isHandleLocked.mockResolvedValue(false); prismaOltp.user_sso_login.create.mockResolvedValue({} as any); prismaOltp.user.update.mockResolvedValue({} as any); // For updateLastLoginDate prismaOltp.$transaction.mockImplementation((callback): Promise => { @@ -2344,6 +2588,14 @@ describe('UserService', () => { service.findOrCreateUserByAuth0Profile(auth0Profile), ).rejects.toThrow(ConflictException); }); + + it('should throw ConflictException if generated handle is locked', async () => { + validationService.isHandleLocked.mockResolvedValueOnce(true); + + await expect( + service.findOrCreateUserByAuth0Profile(auth0Profile), + ).rejects.toThrow(ConflictException); + }); }); describe('updateLastLoginDate', () => { diff --git a/src/api/user/user.service.ts b/src/api/user/user.service.ts index 2f45bda..00279fc 100644 --- a/src/api/user/user.service.ts +++ b/src/api/user/user.service.ts @@ -48,6 +48,19 @@ import { CommonUtils } from '../../shared/util/common.utils'; import { getProviderDetails } from '../../core/constant/provider-type.enum'; import { addMinutes } from 'date-fns'; type GroupIdRow = { id: string }; +type UserIdRow = { user_id: bigint | Decimal | number | string }; +type UserSearchFilters = { + active?: boolean; + email?: string; + handle?: string; + id?: number; + like: boolean; + ssoUserId?: string; +}; +type UserSearchSort = { + direction: Prisma.SortOrder; + fieldName?: string; +}; // Import other needed services like NotificationService, AuthFlowService // Define a basic structure for the Auth0 profile data we expect @@ -123,8 +136,9 @@ export class UserService { query: UserSearchQueryDto, ): Promise<{ users: UserModel[]; total: number }> { this.logger.debug(`Finding users with query: ${JSON.stringify(query)}`); - const { handle, email, id, active, like } = - this.extractSearchFilters(query); + const searchFilters = this.extractSearchFilters(query); + const sortOptions = this.extractSortOptions(query); + const { handle, email, ssoUserId, id, active, like } = searchFilters; const filters: Prisma.userWhereInput[] = []; // If ID is provided, enforce exact match by user_id @@ -133,20 +147,13 @@ export class UserService { } if (handle) { - const wildcard = this.parseWildcard(handle); - if (like || wildcard.hasWildcard) { - const value = wildcard.value; - if (value.length > 0) { - if (wildcard.type === 'startsWith') { - filters.push({ - handle: { startsWith: value, mode: 'insensitive' }, - }); - } else if (wildcard.type === 'endsWith') { - filters.push({ handle: { endsWith: value, mode: 'insensitive' } }); - } else { - // contains (default) - filters.push({ handle: { contains: value, mode: 'insensitive' } }); - } + const hasHandleWildcard = handle.includes('*'); + if (like || hasHandleWildcard) { + const handleFilter = this.buildInsensitiveStringFilter(handle, like); + if (handleFilter) { + filters.push({ + handle: handleFilter, + }); } } else { // exact match on lowered handle for performance/index usage @@ -155,26 +162,10 @@ export class UserService { } if (email?.trim()) { - const wildcard = this.parseWildcard(email.trim()); - const buildEmailAddressFilter = () => { - if (like || wildcard.hasWildcard) { - const value = wildcard.value; - if (value.length === 0) { - // If wildcard resolves to empty, skip adding a filter - return undefined as any; - } - if (wildcard.type === 'startsWith') { - return { startsWith: value, mode: 'insensitive' } as const; - } else if (wildcard.type === 'endsWith') { - return { endsWith: value, mode: 'insensitive' } as const; - } - return { contains: value, mode: 'insensitive' } as const; - } - // exact match by default - return { equals: wildcard.value, mode: 'insensitive' } as const; - }; - - const addressFilter = buildEmailAddressFilter(); + const addressFilter = this.buildInsensitiveStringFilter( + email.trim(), + like, + ); if (addressFilter) { filters.push({ OR: [ @@ -199,6 +190,23 @@ export class UserService { } } + if (ssoUserId?.trim()) { + const ssoFilter = this.buildInsensitiveStringFilter( + ssoUserId.trim(), + like, + ); + + if (ssoFilter) { + filters.push({ + user_sso_login: { + some: { + OR: [{ sso_user_id: ssoFilter }, { sso_user_name: ssoFilter }], + }, + }, + }); + } + } + // Filter by active flag (derived from status) if (typeof active === 'boolean') { if (active) { @@ -214,12 +222,22 @@ export class UserService { try { const total = await this.prismaClient.user.count({ where: whereClause }); - - const users = await this.prismaClient.user.findMany({ - where: whereClause, - skip: query.offset ?? 0, - take: query.limit ?? Constants.defaultPageSize, - }); + const directOrderBy = this.buildUserOrderBy(sortOptions); + + const users = + sortOptions.fieldName === 'email' || + sortOptions.fieldName === 'ssoUserId' + ? await this.findUsersWithJoinedSort( + searchFilters, + query, + sortOptions, + ) + : await this.prismaClient.user.findMany({ + where: whereClause, + skip: query.offset ?? 0, + take: query.limit ?? Constants.defaultPageSize, + ...(directOrderBy ? { orderBy: directOrderBy } : {}), + }); if (!users.length) { return { users, total }; @@ -239,10 +257,23 @@ export class UserService { }, }); + const ssoLogins = await this.prismaClient.user_sso_login.findMany({ + where: { + user_id: { in: userIds }, + }, + select: { + user_id: true, + sso_user_id: true, + provider_id: true, + }, + orderBy: [{ user_id: 'asc' }, { provider_id: 'asc' }], + }); + const emailMap = new Map< string, { address: string | null; statusId: Decimal | null } >(); + const ssoUserIdMap = new Map(); for (const email of primaryEmails) { emailMap.set(email.user_id.toString(), { @@ -251,12 +282,24 @@ export class UserService { }); } + for (const ssoLogin of ssoLogins) { + const userIdKey = ssoLogin.user_id.toString(); + if (!ssoUserIdMap.has(userIdKey) && ssoLogin.sso_user_id) { + ssoUserIdMap.set(userIdKey, ssoLogin.sso_user_id); + } + } + for (const user of users) { const emailRecord = emailMap.get(user.user_id.toString()); if (emailRecord) { (user as any).primaryEmailAddress = emailRecord.address; (user as any).primaryEmailStatusId = emailRecord.statusId; } + + const ssoLoginUserId = ssoUserIdMap.get(user.user_id.toString()); + if (ssoLoginUserId) { + (user as any).ssoUserId = ssoLoginUserId; + } } return { users, total }; @@ -266,13 +309,12 @@ export class UserService { } } - private extractSearchFilters(query: UserSearchQueryDto): { - id?: number; - handle?: string; - email?: string; - active?: boolean; - like: boolean; - } { + /** + * Extracts supported user-search filters from the request query. + * @param query Raw request query DTO. + * @returns Normalized filter values used by both Prisma and SQL search paths. + */ + private extractSearchFilters(query: UserSearchQueryDto): UserSearchFilters { const parsedFilters = this.parseFilterString(query.filter); // id filter: support `id` and `userId` const idRaw = this.getFirstFilterValue(parsedFilters, ['id', 'userId']); @@ -288,6 +330,9 @@ export class UserService { 'emailAddress', 'primaryEmail', ]); + const ssoUserId = + query.ssoUserId ?? + this.getFirstFilterValue(parsedFilters, ['ssoUserId', 'ssoUserName']); // active filter: true/false or 1/0 const activeRaw = this.getFirstFilterValue(parsedFilters, ['active']); @@ -306,7 +351,21 @@ export class UserService { like = v === 'true' || v === '1'; } - return { id: validId, handle, email, active, like }; + return { id: validId, handle, email, ssoUserId, active, like }; + } + + /** + * Extracts supported sort options from the request query. + * @param query Raw request query DTO. + * @returns Normalized sort field and direction. + */ + private extractSortOptions(query: UserSearchQueryDto): UserSearchSort { + const requestedDirection = query.sortOrder?.toLowerCase(); + + return { + direction: requestedDirection === 'desc' ? 'desc' : 'asc', + fieldName: query.sortBy?.trim() || undefined, + }; } private parseFilterString(filter?: string): Record { @@ -369,37 +428,408 @@ export class UserService { } /** - * Parse a potential wildcard string using '*' semantics. - * - 'abc*' => startsWith 'abc' - * - '*abc' => endsWith 'abc' - * - 'a*b' or contains '*' internally => contains 'ab' (collapsed) - * - no '*' => exact with value + * Builds a Prisma case-insensitive string filter with optional wildcard support. + * @param searchValue Raw search value that may include `*` wildcard characters. + * @param like Whether wildcard semantics should be enabled even if `*` is absent. + * @returns A Prisma-compatible string filter or undefined when the wildcard resolves to an empty value. + */ + private buildInsensitiveStringFilter( + searchValue: string, + like: boolean, + ): + | { + contains?: string; + endsWith?: string; + equals?: string; + mode: Prisma.QueryMode; + startsWith?: string; + } + | undefined { + const trimmedValue = searchValue.trim(); + const hasWildcard = trimmedValue.includes('*'); + + if (!like && !hasWildcard) { + return { + equals: trimmedValue, + mode: 'insensitive', + }; + } + + if (!hasWildcard) { + return { + contains: trimmedValue, + mode: 'insensitive', + }; + } + + const rawParts = trimmedValue.split('*'); + const nonEmptyParts = rawParts.filter((part) => part.length > 0); + + if (!nonEmptyParts.length) { + return undefined; + } + + const filter: { + contains?: string; + endsWith?: string; + mode: Prisma.QueryMode; + startsWith?: string; + } = { + mode: 'insensitive', + }; + + if (!trimmedValue.startsWith('*')) { + filter.startsWith = rawParts[0]; + } + + if (!trimmedValue.endsWith('*')) { + filter.endsWith = rawParts[rawParts.length - 1]; + } + + const middleParts = nonEmptyParts.filter((part, index) => { + const isFirstPart = index === 0; + const isLastPart = index === nonEmptyParts.length - 1; + + if (isFirstPart && !trimmedValue.startsWith('*')) { + return false; + } + + if (isLastPart && !trimmedValue.endsWith('*')) { + return false; + } + + return true; + }); + + if (middleParts.length > 0) { + filter.contains = middleParts.join(''); + } + + if (!filter.startsWith && !filter.endsWith && !filter.contains) { + filter.contains = nonEmptyParts.join(''); + } + + return filter; + } + + /** + * Maps supported UI sort fields to Prisma orderBy clauses. + * @param sort Requested sort field and direction. + * @returns Prisma orderBy array when the field can be handled directly, otherwise undefined. + */ + private buildUserOrderBy( + sort: UserSearchSort, + ): Prisma.userOrderByWithRelationInput[] | undefined { + if (!sort.fieldName) { + return undefined; + } + + switch (sort.fieldName) { + case 'id': + return [{ user_id: sort.direction }]; + case 'handle': + return [{ handle_lower: sort.direction }, { user_id: sort.direction }]; + case 'firstName': + return [ + { first_name: sort.direction }, + { last_name: sort.direction }, + { user_id: sort.direction }, + ]; + case 'status': + case 'statusDesc': + return [{ status: sort.direction }, { user_id: sort.direction }]; + case 'createdAt': + return [{ create_date: sort.direction }, { user_id: sort.direction }]; + case 'modifiedAt': + return [{ modify_date: sort.direction }, { user_id: sort.direction }]; + case 'activationCode': + return [ + { activation_code: sort.direction }, + { user_id: sort.direction }, + ]; + default: + return undefined; + } + } + + /** + * Fetches one page of users ordered by a joined field that Prisma cannot sort directly. + * @param searchFilters Normalized request filters. + * @param query Pagination query values. + * @param sort Requested joined-field sort. + * @returns Ordered user models for the requested page. + */ + private async findUsersWithJoinedSort( + searchFilters: UserSearchFilters, + query: UserSearchQueryDto, + sort: UserSearchSort, + ): Promise { + const userIds = await this.findSortedUserIdsByJoinedField( + searchFilters, + query, + sort, + ); + + if (!userIds.length) { + return []; + } + + const users = await this.prismaClient.user.findMany({ + where: { + user_id: { + in: userIds, + }, + }, + }); + + const positionByUserId = new Map(); + userIds.forEach((userId, index) => positionByUserId.set(userId, index)); + + return [...users].sort( + (left, right) => + (positionByUserId.get(Number(left.user_id)) ?? + Number.MAX_SAFE_INTEGER) - + (positionByUserId.get(Number(right.user_id)) ?? + Number.MAX_SAFE_INTEGER), + ); + } + + /** + * Selects user ids ordered by a joined email or SSO identifier. + * @param searchFilters Normalized request filters. + * @param query Pagination query values. + * @param sort Requested joined-field sort. + * @returns Ordered numeric user ids for the requested page. */ - private parseWildcard(value: string): { - hasWildcard: boolean; - type: 'startsWith' | 'endsWith' | 'contains' | 'exact'; - value: string; - } { - const idxFirst = value.indexOf('*'); - if (idxFirst === -1) { - return { hasWildcard: false, type: 'exact', value }; - } - const idxLast = value.lastIndexOf('*'); - // Remove all '*' - const stripped = value.replace(/\*/g, ''); - if (!stripped) { - return { hasWildcard: true, type: 'contains', value: '' }; - } - if (idxFirst === 0 && idxLast === value.length - 1) { - return { hasWildcard: true, type: 'contains', value: stripped }; - } - if (idxFirst === 0) { - return { hasWildcard: true, type: 'endsWith', value: stripped }; - } - if (idxLast === value.length - 1) { - return { hasWildcard: true, type: 'startsWith', value: stripped }; - } - return { hasWildcard: true, type: 'contains', value: stripped }; + private async findSortedUserIdsByJoinedField( + searchFilters: UserSearchFilters, + query: UserSearchQueryDto, + sort: UserSearchSort, + ): Promise { + const whereConditions = this.buildJoinedSortWhereConditions(searchFilters); + const whereSql = whereConditions.length + ? Prisma.sql`WHERE ${Prisma.join(whereConditions, ' AND ')}` + : Prisma.empty; + const directionSql = + sort.direction === 'desc' ? Prisma.raw('DESC') : Prisma.raw('ASC'); + const sortColumnSql = + sort.fieldName === 'email' + ? Prisma.raw('primary_email.address') + : Prisma.raw('primary_sso.sso_user_id'); + + const rows = await this.prismaClient.$queryRaw` + SELECT u.user_id + FROM identity.user u + LEFT JOIN LATERAL ( + SELECT e.address + FROM identity.email e + WHERE e.user_id = u.user_id + AND e.primary_ind = ${Constants.primaryEmailFlag} + AND e.email_type_id = ${Constants.standardEmailType} + ORDER BY e.email_id ASC + LIMIT 1 + ) primary_email ON TRUE + LEFT JOIN LATERAL ( + SELECT usl.sso_user_id + FROM identity.user_sso_login usl + WHERE usl.user_id = u.user_id + ORDER BY usl.provider_id ASC + LIMIT 1 + ) primary_sso ON TRUE + ${whereSql} + ORDER BY + CASE + WHEN ${sortColumnSql} IS NULL OR ${sortColumnSql} = '' THEN 1 + ELSE 0 + END ASC, + LOWER(COALESCE(${sortColumnSql}, '')) ${directionSql}, + u.user_id ${directionSql} + OFFSET ${query.offset ?? 0} + LIMIT ${query.limit ?? Constants.defaultPageSize} + `; + + return rows + .map((row) => Number(row.user_id)) + .filter((userId) => Number.isFinite(userId)); + } + + /** + * Builds SQL where conditions that mirror the supported user search filters. + * @param searchFilters Normalized request filters. + * @returns SQL fragments that can be safely joined with AND. + */ + private buildJoinedSortWhereConditions( + searchFilters: UserSearchFilters, + ): Prisma.Sql[] { + const whereConditions: Prisma.Sql[] = []; + const { active, email, handle, id, like, ssoUserId } = searchFilters; + + if (typeof id === 'number' && Number.isFinite(id)) { + whereConditions.push(Prisma.sql`u.user_id = ${id}`); + } + + const handleCondition = this.buildSqlStringMatchCondition( + Prisma.raw('u.handle'), + handle, + like, + ); + if (handleCondition) { + whereConditions.push(handleCondition); + } + + const emailCondition = this.buildEmailMatchCondition(email, like); + if (emailCondition) { + whereConditions.push(emailCondition); + } + + const ssoCondition = this.buildSsoMatchCondition(ssoUserId, like); + if (ssoCondition) { + whereConditions.push(ssoCondition); + } + + if (typeof active === 'boolean') { + whereConditions.push( + active + ? Prisma.sql`u.status = ${MemberStatus.ACTIVE}` + : Prisma.sql`u.status <> ${MemberStatus.ACTIVE}`, + ); + } + + return whereConditions; + } + + /** + * Builds a case-insensitive SQL match condition for a single column. + * @param column SQL column reference. + * @param searchValue Raw search value from the request. + * @param like Whether wildcard semantics should be applied. + * @returns SQL comparison fragment or undefined when the search term is empty. + */ + private buildSqlStringMatchCondition( + column: Prisma.Sql, + searchValue?: string, + like: boolean = false, + ): Prisma.Sql | undefined { + const pattern = this.buildSqlIlikePattern(searchValue, like); + + if (!pattern) { + return undefined; + } + + return Prisma.sql`${column} ILIKE ${pattern} ESCAPE '\\'`; + } + + /** + * Builds the SQL condition used to search any related email address for a user. + * @param searchValue Raw email search value from the request. + * @param like Whether wildcard semantics should be applied. + * @returns SQL EXISTS fragment or undefined when the search term is empty. + */ + private buildEmailMatchCondition( + searchValue?: string, + like: boolean = false, + ): Prisma.Sql | undefined { + const pattern = this.buildSqlIlikePattern(searchValue, like); + + if (!pattern) { + return undefined; + } + + return Prisma.sql` + ( + EXISTS ( + SELECT 1 + FROM identity.user_email_xref uex + INNER JOIN identity.email xref_email + ON xref_email.email_id = uex.email_id + WHERE uex.user_id = u.user_id + AND xref_email.address ILIKE ${pattern} ESCAPE '\\' + ) + OR EXISTS ( + SELECT 1 + FROM identity.email direct_email + WHERE direct_email.user_id = u.user_id + AND direct_email.address ILIKE ${pattern} ESCAPE '\\' + ) + ) + `; + } + + /** + * Builds the SQL condition used to search SSO login identifiers for a user. + * @param searchValue Raw SSO search value from the request. + * @param like Whether wildcard semantics should be applied. + * @returns SQL EXISTS fragment or undefined when the search term is empty. + */ + private buildSsoMatchCondition( + searchValue?: string, + like: boolean = false, + ): Prisma.Sql | undefined { + const pattern = this.buildSqlIlikePattern(searchValue, like); + + if (!pattern) { + return undefined; + } + + return Prisma.sql` + EXISTS ( + SELECT 1 + FROM identity.user_sso_login usl + WHERE usl.user_id = u.user_id + AND ( + usl.sso_user_id ILIKE ${pattern} ESCAPE '\\' + OR usl.sso_user_name ILIKE ${pattern} ESCAPE '\\' + ) + ) + `; + } + + /** + * Converts the legacy wildcard syntax into a safe SQL ILIKE pattern. + * @param searchValue Raw search value from the request. + * @param like Whether wildcard semantics should be applied even without `*`. + * @returns SQL-ready ILIKE pattern or undefined when nothing meaningful was provided. + */ + private buildSqlIlikePattern( + searchValue?: string, + like: boolean = false, + ): string | undefined { + const trimmedValue = searchValue?.trim(); + + if (!trimmedValue) { + return undefined; + } + + const hasWildcard = trimmedValue.includes('*'); + const literalContent = trimmedValue.replace(/\*/g, ''); + + if ((like || hasWildcard) && literalContent.length === 0) { + return undefined; + } + + const escapedValue = Array.from(trimmedValue) + .map((character) => { + if (character === '*') { + return '%'; + } + + if (character === '\\' || character === '%' || character === '_') { + return `\\${character}`; + } + + return character; + }) + .join(''); + + if (!like && !hasWildcard) { + return escapedValue; + } + + if (!hasWildcard) { + return `%${escapedValue}%`; + } + + return escapedValue; } async findUserById(userId: number): Promise { @@ -700,6 +1130,30 @@ export class UserService { } } + /** + * Converts a handle validation response into the appropriate HTTP exception. + * @param validationResponse Result returned by ValidationService.validateHandle. + * @throws ConflictException when the handle is already taken or locked. + * @throws BadRequestException for all other validation failures. + */ + private assertHandleValidationSucceeded( + validationResponse: ValidationResponseDto, + ): void { + if (validationResponse.valid) { + return; + } + + if (validationResponse.reasonCode === 'ALREADY_TAKEN') { + throw new ConflictException( + validationResponse.reason ?? 'Handle is taken', + ); + } + + throw new BadRequestException( + `Handle validation failed: ${validationResponse.reason}`, + ); + } + async registerUser(createUserDto: CreateUserBodyDto): Promise { const userParams: UserParamBaseDto = createUserDto.param; @@ -718,11 +1172,7 @@ export class UserService { // handle validation const validationResponse: ValidationResponseDto = await this.validationService.validateHandle(userParams.handle); - if (!validationResponse.valid) { - throw new BadRequestException( - `Handle validation failed: ${validationResponse.reason}`, - ); - } + this.assertHandleValidationSucceeded(validationResponse); // email validation await this.validationService.validateEmailViaDB(userParams.email); // country validation @@ -1342,11 +1792,7 @@ export class UserService { newHandle, userId, ); - if (!validationResponse.valid) { - throw new BadRequestException( - `Handle validation failed: ${validationResponse.reason}`, - ); - } + this.assertHandleValidationSucceeded(validationResponse); // Fetch the user to ensure they exist and get the old handle const existingUser = await this.prismaClient.user.findUnique({ @@ -1900,7 +2346,8 @@ export class UserService { const existingUserByHandle = await this.prismaClient.user.findFirst({ where: { handle_lower: handleLower }, }); - if (existingUserByHandle) { + const lockedHandle = await this.validationService.isHandleLocked(handle); + if (existingUserByHandle || lockedHandle) { // Handle conflict, e.g., by appending a suffix or throwing an error. For now, simple error. // This should be rare if nickname/given_name is somewhat unique or uuid is used. this.logger.error( diff --git a/src/api/user/validation.service.spec.ts b/src/api/user/validation.service.spec.ts index c1977f5..0386f4e 100644 --- a/src/api/user/validation.service.spec.ts +++ b/src/api/user/validation.service.spec.ts @@ -51,6 +51,10 @@ const mockPrismaOltp = { findFirst: jest.fn(), count: jest.fn(), }, + invalid_handles: { + count: jest.fn(), + }, + $queryRaw: jest.fn(), email: { findFirst: jest.fn(), }, @@ -189,6 +193,8 @@ describe('ValidationService', () => { describe('validateHandle', () => { it('should return valid if handle is good and available', async () => { prismaOltp.user.findFirst.mockResolvedValue(null); + prismaOltp.invalid_handles.count.mockResolvedValue(0); + prismaOltp.$queryRaw.mockResolvedValue([]); const result = await service.validateHandle('new_handle123'); expect(result).toEqual({ valid: true }); expect(prismaOltp.user.findFirst).toHaveBeenCalledWith({ @@ -196,43 +202,66 @@ describe('ValidationService', () => { }); }); - it('should throw BadRequestException if handle is empty', async () => { - await expect(service.validateHandle('')).rejects.toThrow( - new BadRequestException('Handle cannot be empty.'), - ); + it('should return invalid if handle is empty', async () => { + await expect(service.validateHandle('')).resolves.toEqual({ + valid: false, + reason: 'Handle is required', + }); }); - it('should throw BadRequestException if handle format is invalid (too short)', async () => { - await expect(service.validateHandle('h!')).rejects.toThrow( - new BadRequestException( - 'Handle must be 3-64 characters long and can only contain alphanumeric characters and _.-`[]{} symbols.', - ), - ); + it('should return invalid if handle format is invalid (too short)', async () => { + await expect(service.validateHandle('h!')).resolves.toEqual({ + valid: false, + reason: 'Length of Handle in character should be between 3 and 64.', + reasonCode: 'INVALID_LENGTH', + }); }); - it('should throw BadRequestException if handle format is invalid (invalid char)', async () => { - await expect(service.validateHandle('handle*')).rejects.toThrow( - new BadRequestException( + + it('should return invalid if handle format is invalid (invalid char)', async () => { + await expect(service.validateHandle('handle*')).resolves.toEqual({ + valid: false, + reason: 'Handle must be 3-64 characters long and can only contain alphanumeric characters and _.-`[]{} symbols.', - ), - ); + reasonCode: 'INVALID_FORMAT', + }); }); - it('should throw BadRequestException if handle is reserved', async () => { - await expect(service.validateHandle('admin')).rejects.toThrow( - new BadRequestException("Handle 'admin' is reserved."), - ); - await expect(service.validateHandle('Support')).rejects.toThrow( - new BadRequestException("Handle 'Support' is reserved."), - ); + it('should return invalid if handle is reserved', async () => { + await expect(service.validateHandle('admin')).resolves.toEqual({ + valid: false, + reason: 'Please choose another handle, not starting with admin.', + reasonCode: 'INVALID_HANDLE', + }); + await expect(service.validateHandle('Support')).resolves.toEqual({ + valid: false, + reason: "Handle 'Support' is reserved", + reasonCode: 'INVALID_HANDLE', + }); }); - it('should throw ConflictException if handle already exists', async () => { + it('should return invalid if handle already exists', async () => { prismaOltp.user.findFirst.mockResolvedValue( createMockUserModel({ handle: 'existing_handle' }), ); - await expect(service.validateHandle('existing_handle')).rejects.toThrow( - new ConflictException("Handle 'existing_handle' is already taken."), - ); + prismaOltp.invalid_handles.count.mockResolvedValue(0); + prismaOltp.$queryRaw.mockResolvedValue([]); + await expect(service.validateHandle('existing_handle')).resolves.toEqual({ + valid: false, + reason: "Handle 'existing_handle' has already been taken", + reasonCode: 'ALREADY_TAKEN', + }); + }); + + it('should return invalid if handle is locked', async () => { + prismaOltp.user.findFirst.mockResolvedValue(null); + prismaOltp.invalid_handles.count.mockResolvedValue(0); + prismaOltp.$queryRaw.mockResolvedValue([{ locked_handle_id: 1 }]); + + await expect(service.validateHandle('deleted_handle')).resolves.toEqual({ + valid: false, + reason: "Handle 'deleted_handle' has already been taken", + reasonCode: 'ALREADY_TAKEN', + }); }); }); diff --git a/src/api/user/validation.service.ts b/src/api/user/validation.service.ts index c7b30c5..889ab67 100644 --- a/src/api/user/validation.service.ts +++ b/src/api/user/validation.service.ts @@ -185,14 +185,20 @@ export class ValidationService { }; } + const normalizedHandle = handle.toLowerCase(); + // now check if handle is already used by someone else - const existingUser = await this.prismaClient.user.findFirst({ - where: { handle_lower: handle.toLowerCase() }, - }); + const [existingUser, lockedHandle] = await Promise.all([ + this.prismaClient.user.findFirst({ + where: { handle_lower: normalizedHandle }, + }), + this.isHandleLocked(handle), + ]); if ( - existingUser && - (!userId || (existingUser?.user_id as unknown as number) != userId) + (existingUser && + (!userId || (existingUser?.user_id as unknown as number) != userId)) || + lockedHandle ) { return { valid: false, @@ -278,6 +284,29 @@ export class ValidationService { return count > 0; } + /** + * Checks whether a handle was previously deleted and permanently reserved. + * @param handle Handle to check. + * @returns True when the handle exists in identity.locked_handles, false otherwise. + */ + async isHandleLocked(handle: string): Promise { + if (!handle) { + return false; + } + + const normalizedHandle = handle.toLowerCase(); + const lockedHandleRows = await this.prismaClient.$queryRaw< + Array<{ locked_handle_id: number }> + >` + SELECT locked_handle_id + FROM identity.locked_handles + WHERE locked_handle_lower = ${normalizedHandle} + LIMIT 1 + `; + + return lockedHandleRows.length > 0; + } + async validateEmail( email: string, userId: number = null, diff --git a/src/dto/user/user.dto.ts b/src/dto/user/user.dto.ts index f18dcbc..1a9f379 100644 --- a/src/dto/user/user.dto.ts +++ b/src/dto/user/user.dto.ts @@ -17,6 +17,7 @@ import { IsUrl, Length, IsInt, + IsIn, Min, IsDate, } from 'class-validator'; @@ -451,6 +452,7 @@ export class UserResponseDto { id: string; handle: string; email?: string; // Primary email + ssoUserId?: string; emailActive?: boolean; firstName?: string; lastName?: string; @@ -548,6 +550,16 @@ export class UserSearchQueryDto { }) email?: string; + @IsString() + @IsOptional() + @ApiPropertyOptional({ + name: 'ssoUserId', + type: String, + description: + 'SSO user identifier search term. Matches both SSO user id and SSO user name.', + }) + ssoUserId?: string; + @IsInt() @Min(1) @IsOptional() @@ -576,6 +588,26 @@ export class UserSearchQueryDto { description: 'comma-separated list of fields to include in response', }) selector?: string; + + @IsString() + @IsOptional() + @ApiPropertyOptional({ + name: 'sortBy', + type: String, + description: + 'User list sort field. Supported values include id, handle, firstName, statusDesc, createdAt, modifiedAt, email, ssoUserId, and activationCode.', + }) + sortBy?: string; + + @IsString() + @IsOptional() + @IsIn(['asc', 'desc', 'ASC', 'DESC']) + @ApiPropertyOptional({ + name: 'sortOrder', + type: String, + description: 'Sort direction for sortBy. Accepted values: asc, desc.', + }) + sortOrder?: 'asc' | 'desc'; } // --- Added for UserController.deleteSSOUserLogin ---