refactor user accounts structure
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
model Admin {
|
||||
id String @id @default(uuid())
|
||||
mobile_number String @unique()
|
||||
national_code String? @unique()
|
||||
first_name String
|
||||
last_name String
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
accounts AdminAccount[]
|
||||
|
||||
@@map("admins")
|
||||
}
|
||||
|
||||
model AdminAccount {
|
||||
id String @id @default(uuid())
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
user_id String
|
||||
user Admin @relation(fields: [user_id], references: [id])
|
||||
|
||||
account_id String @unique
|
||||
account Account @relation(fields: [account_id], references: [id])
|
||||
|
||||
@@map("admin_accounts")
|
||||
}
|
||||
|
||||
// model LegalProfile {
|
||||
// user_id String @id
|
||||
// company_name String
|
||||
// register_no String @unique()
|
||||
// representative_name String?
|
||||
// representative_national_id String?
|
||||
|
||||
// // user User @relation(fields: [user_id], references: [id])
|
||||
|
||||
// @@map("legal_profiles")
|
||||
// }
|
||||
|
||||
// model IndividualProfile {
|
||||
// user_id String @id
|
||||
// national_code String @unique()
|
||||
// first_name String
|
||||
// last_name String
|
||||
// birth_date DateTime?
|
||||
// mobile_number String
|
||||
// // user User @relation(fields: [user_id], references: [id])
|
||||
|
||||
// @@map("individual_profiles")
|
||||
// }
|
||||
@@ -1,26 +1,44 @@
|
||||
model Token {
|
||||
id String @id @default(uuid())
|
||||
token String @unique
|
||||
type TokenType
|
||||
created_at DateTime @default(now())
|
||||
expires_at DateTime
|
||||
model Account {
|
||||
id String @id @default(uuid())
|
||||
username String @unique()
|
||||
password String @unique()
|
||||
status AccountStatus
|
||||
type AccountType
|
||||
|
||||
account_id String
|
||||
account Account @relation(fields: [account_id], references: [id])
|
||||
admin_account AdminAccount?
|
||||
provider_account ProviderAccount?
|
||||
partner_account PartnerAccount?
|
||||
consumer_account ConsumerAccount?
|
||||
|
||||
@@unique([type, account_id])
|
||||
@@map("tokens")
|
||||
// tokens Token[]
|
||||
// refresh_tokens RefreshToken[]
|
||||
|
||||
@@map("accounts")
|
||||
}
|
||||
|
||||
model VerificationCode {
|
||||
id String @id @default(uuid())
|
||||
code String
|
||||
is_used Boolean @default(false)
|
||||
created_at DateTime @default(now())
|
||||
expires_at DateTime
|
||||
// model Token {
|
||||
// id String @id @d @uniqueefault(uuid())
|
||||
// token String @unique
|
||||
// type TokenType
|
||||
// created_at DateTime @default(now())
|
||||
// expires_at DateTime
|
||||
|
||||
account_id String
|
||||
account Account @relation(fields: [account_id], references: [id])
|
||||
// account_id String
|
||||
// account Account @relation(fields: [account_id], references: [id])
|
||||
|
||||
@@map("verification_codes")
|
||||
}
|
||||
// @@unique([type, account_id])
|
||||
// @@map("tokens")
|
||||
// }
|
||||
|
||||
// model VerificationCode {
|
||||
// id String @id @default(uuid())
|
||||
// code String
|
||||
// is_used Boolean @default(false)
|
||||
// created_at DateTime @default(now())
|
||||
// expires_at DateTime
|
||||
|
||||
// account_id String
|
||||
// account Account @relation(fields: [account_id], references: [id])
|
||||
|
||||
// @@map("verification_codes")
|
||||
// }
|
||||
|
||||
@@ -1,16 +1,35 @@
|
||||
model Guild {
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
code String?
|
||||
model Consumer {
|
||||
id String @id @default(uuid())
|
||||
mobile_number String @unique()
|
||||
first_name String
|
||||
last_name String
|
||||
status ConsumerStatus @default(ACTIVE)
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
business_activities BusinessActivity[]
|
||||
goods Good[]
|
||||
good_categories GoodCategory[]
|
||||
accounts ConsumerAccount[]
|
||||
businessActivities BusinessActivity[]
|
||||
|
||||
@@map("guilds")
|
||||
@@map("consumers")
|
||||
}
|
||||
|
||||
model ConsumerAccount {
|
||||
id String @id @default(uuid())
|
||||
role ConsumerRole
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
user_id String
|
||||
user Consumer @relation(fields: [user_id], references: [id])
|
||||
|
||||
account_id String @unique
|
||||
account Account @relation(fields: [account_id], references: [id])
|
||||
|
||||
permissions PermissionConsumer[]
|
||||
|
||||
@@map("consumer_accounts")
|
||||
}
|
||||
|
||||
model BusinessActivity {
|
||||
@@ -20,13 +39,13 @@ model BusinessActivity {
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
guild_id String
|
||||
owner_id String
|
||||
user_id String
|
||||
|
||||
guild Guild @relation(fields: [guild_id], references: [id])
|
||||
user User @relation(fields: [owner_id], references: [id])
|
||||
guild Guild @relation(fields: [guild_id], references: [id])
|
||||
user Consumer @relation(fields: [user_id], references: [id])
|
||||
|
||||
complexes Complex[]
|
||||
accounts Account[]
|
||||
complexes Complex[]
|
||||
permissionBusinesses PermissionBusiness[]
|
||||
|
||||
@@map("business_activities")
|
||||
}
|
||||
@@ -44,9 +63,10 @@ model Complex {
|
||||
|
||||
business_activity BusinessActivity @relation(fields: [business_activity_id], references: [id])
|
||||
|
||||
pos_list Pos[]
|
||||
goods Good[]
|
||||
good_categories GoodCategory[]
|
||||
pos_list Pos[]
|
||||
goods Good[]
|
||||
good_categories GoodCategory[]
|
||||
permissionComplexes PermissionComplex[]
|
||||
|
||||
@@map("complexes")
|
||||
}
|
||||
@@ -61,16 +81,17 @@ model Pos {
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
complex_id String
|
||||
device_id String?
|
||||
complex_id String
|
||||
complex Complex @relation(fields: [complex_id], references: [id])
|
||||
|
||||
device_id String?
|
||||
device Device? @relation(fields: [device_id], references: [id])
|
||||
|
||||
provider_id String?
|
||||
provider Provider? @relation(fields: [provider_id], references: [id])
|
||||
|
||||
complex Complex @relation(fields: [complex_id], references: [id])
|
||||
device Device? @relation(fields: [device_id], references: [id])
|
||||
provider Provider? @relation(fields: [provider_id], references: [id])
|
||||
|
||||
licenses License[]
|
||||
accounts Account[]
|
||||
licenses License[]
|
||||
permissionPos PermissionPos[]
|
||||
|
||||
@@map("poses")
|
||||
}
|
||||
@@ -1,29 +1,31 @@
|
||||
model Partner {
|
||||
id String @id @default(uuid())
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
code String?
|
||||
license_quota Int? @default(0)
|
||||
code String @unique()
|
||||
license_quota Int? @default(0)
|
||||
status PartnerStatus @default(ACTIVE)
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @default(now()) @updatedAt @db.Timestamp(0)
|
||||
|
||||
licenses License[]
|
||||
account Account[]
|
||||
accounts PartnerAccount[]
|
||||
|
||||
@@map("partners")
|
||||
}
|
||||
|
||||
// model PartnerAccount {
|
||||
// id String @id @default(uuid())
|
||||
// role PartnerRole
|
||||
// status AccountStatus @default(ACTIVE)
|
||||
// created_at DateTime @default(now())
|
||||
// partner_id String
|
||||
// account_id String @unique
|
||||
model PartnerAccount {
|
||||
id String @id @default(uuid())
|
||||
role PartnerRole
|
||||
|
||||
// partner Partner @relation(fields: [partner_id], references: [id])
|
||||
// account Account @relation(fields: [account_id], references: [id])
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @default(now()) @updatedAt @db.Timestamp(0)
|
||||
|
||||
// @@unique([partner_id, account_id])
|
||||
// @@map("partner_accounts")
|
||||
// }
|
||||
user_id String
|
||||
user Partner @relation(fields: [user_id], references: [id])
|
||||
|
||||
account_id String @unique
|
||||
account Account @relation(fields: [account_id], references: [id])
|
||||
|
||||
@@map("partner_accounts")
|
||||
}
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
model PermissionConsumer {
|
||||
id String @id @default(uuid())
|
||||
|
||||
account_id String @unique
|
||||
|
||||
account ConsumerAccount @relation(fields: [account_id], references: [id])
|
||||
|
||||
posPermissions PermissionPos[]
|
||||
complexPermissions PermissionComplex[]
|
||||
businessPermissions PermissionBusiness[]
|
||||
|
||||
@@map("permission_consumers")
|
||||
}
|
||||
|
||||
model PermissionPos {
|
||||
id String @id @default(uuid())
|
||||
role POSRole
|
||||
|
||||
pos_id String
|
||||
permission_id String
|
||||
|
||||
pos Pos @relation(fields: [pos_id], references: [id])
|
||||
permission PermissionConsumer @relation(fields: [permission_id], references: [id])
|
||||
|
||||
@@unique([permission_id, pos_id])
|
||||
@@map("permission_poses")
|
||||
}
|
||||
|
||||
model PermissionComplex {
|
||||
id String @id @default(uuid())
|
||||
role ComplexRole
|
||||
|
||||
complex_id String
|
||||
permission_id String
|
||||
|
||||
complex Complex @relation(fields: [complex_id], references: [id])
|
||||
permission PermissionConsumer @relation(fields: [permission_id], references: [id])
|
||||
|
||||
@@unique([permission_id, complex_id])
|
||||
@@map("permission_complexes")
|
||||
}
|
||||
|
||||
model PermissionBusiness {
|
||||
id String @id @default(uuid())
|
||||
role BusinessRole
|
||||
|
||||
business_id String
|
||||
permission_id String
|
||||
|
||||
business BusinessActivity @relation(fields: [business_id], references: [id])
|
||||
permission PermissionConsumer @relation(fields: [permission_id], references: [id])
|
||||
|
||||
@@unique([permission_id, business_id])
|
||||
@@map("permission_business_activities")
|
||||
}
|
||||
@@ -1,77 +0,0 @@
|
||||
model User {
|
||||
id String @id @default(uuid())
|
||||
// user_type UserType
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
// individual_profile IndividualProfile?
|
||||
// legal_profile LegalProfile?
|
||||
mobile_number String @unique()
|
||||
national_code String? @unique()
|
||||
first_name String
|
||||
last_name String
|
||||
// username String
|
||||
accounts Account[]
|
||||
businessActivities BusinessActivity[]
|
||||
|
||||
@@map("users")
|
||||
}
|
||||
|
||||
// model LegalProfile {
|
||||
// user_id String @id
|
||||
// company_name String
|
||||
// register_no String @unique()
|
||||
// representative_name String?
|
||||
// representative_national_id String?
|
||||
|
||||
// // user User @relation(fields: [user_id], references: [id])
|
||||
|
||||
// @@map("legal_profiles")
|
||||
// }
|
||||
|
||||
// model IndividualProfile {
|
||||
// user_id String @id
|
||||
// national_code String @unique()
|
||||
// first_name String
|
||||
// last_name String
|
||||
// birth_date DateTime?
|
||||
// mobile_number String
|
||||
// // user User @relation(fields: [user_id], references: [id])
|
||||
|
||||
// @@map("individual_profiles")
|
||||
// }
|
||||
|
||||
model Account {
|
||||
id String @id @default(uuid())
|
||||
username String @unique()
|
||||
// first_name String
|
||||
// last_name String
|
||||
type AccountType
|
||||
status AccountStatus
|
||||
password String
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
user_id String
|
||||
user User @relation(fields: [user_id], references: [id])
|
||||
|
||||
partner_id String?
|
||||
partner Partner? @relation(fields: [partner_id], references: [id])
|
||||
|
||||
business_id String?
|
||||
business BusinessActivity? @relation(fields: [business_id], references: [id])
|
||||
|
||||
provider_id String?
|
||||
provider Provider? @relation(fields: [provider_id], references: [id])
|
||||
|
||||
pos_id String?
|
||||
pos Pos? @relation(fields: [pos_id], references: [id])
|
||||
|
||||
verification_codes VerificationCode[]
|
||||
tokens Token[]
|
||||
|
||||
@@unique([user_id, business_id])
|
||||
@@unique([user_id, provider_id])
|
||||
@@unique([user_id, pos_id])
|
||||
@@map("accounts")
|
||||
}
|
||||
@@ -1,28 +1,30 @@
|
||||
model Provider {
|
||||
id String @id @default(uuid())
|
||||
name String
|
||||
code String?
|
||||
id String @id @default(uuid())
|
||||
code String @unique()
|
||||
status PartnerStatus @default(ACTIVE)
|
||||
name String
|
||||
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt @db.Timestamp(0)
|
||||
|
||||
pos_list Pos[]
|
||||
accounts Account[]
|
||||
accounts ProviderAccount[]
|
||||
|
||||
@@map("providers")
|
||||
}
|
||||
|
||||
// model ProviderAccount {
|
||||
// id String @id @default(uuid())
|
||||
// role ProviderRole
|
||||
// status AccountStatus @default(ACTIVE)
|
||||
// created_at DateTime @default(now())
|
||||
// provider_id String
|
||||
// account_id String @unique
|
||||
model ProviderAccount {
|
||||
id String @id @default(uuid())
|
||||
role ProviderRole
|
||||
|
||||
// provider Provider @relation(fields: [provider_id], references: [id])
|
||||
// account Account @relation(fields: [account_id], references: [id])
|
||||
created_at DateTime @default(now()) @db.Timestamp(0)
|
||||
updated_at DateTime @updatedAt() @db.Timestamp(0)
|
||||
|
||||
// @@unique([provider_id, account_id])
|
||||
// @@map("provider_accounts")
|
||||
// }
|
||||
user_id String
|
||||
user Provider @relation(fields: [user_id], references: [id])
|
||||
|
||||
account_id String @unique
|
||||
account Account @relation(fields: [account_id], references: [id])
|
||||
|
||||
@@map("provider_accounts")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user