Compare commits
11 Commits
628ff9aeb7
...
21b3a7011f
| Author | SHA1 | Date | |
|---|---|---|---|
| 21b3a7011f | |||
| 85ef765da8 | |||
| 0fec37e337 | |||
| a5a11d026f | |||
| 20b84d3fc4 | |||
| ea28ce0d6f | |||
| 2e81242ca5 | |||
| 2fa48123a0 | |||
| cc4bb95fcd | |||
| 22ff7568a9 | |||
| d4f008cff7 |
File diff suppressed because it is too large
Load Diff
2714
prisma/diagram.json
2714
prisma/diagram.json
File diff suppressed because it is too large
Load Diff
@ -9,3 +9,171 @@ generator dbml {
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
}
|
||||
|
||||
enum user_role {
|
||||
user
|
||||
contributor
|
||||
curator
|
||||
admin
|
||||
}
|
||||
enum user_sex {
|
||||
male
|
||||
female
|
||||
}
|
||||
enum auth_provider {
|
||||
google
|
||||
github
|
||||
}
|
||||
enum device_type {
|
||||
mobile
|
||||
tablet
|
||||
desktop
|
||||
unknown
|
||||
}
|
||||
enum user_preference_state {
|
||||
exclude
|
||||
include
|
||||
}
|
||||
|
||||
model User {
|
||||
id String @id @db.Uuid @default(uuid(7))
|
||||
email String @unique
|
||||
password String? @db.VarChar(255)
|
||||
username String @unique @db.VarChar(28)
|
||||
fullname String @db.VarChar(32)
|
||||
avatar String? @db.VarChar(255)
|
||||
bio String? @db.Text
|
||||
datebirth DateTime? @db.Date
|
||||
role user_role @default(user)
|
||||
sex user_sex?
|
||||
phone_number String? @db.VarChar(20)
|
||||
country Country? @relation(fields: [countryId], references: [id], name: "UserCountry")
|
||||
auth_provider String? @db.VarChar(64)
|
||||
provider_token String? @db.VarChar(255)
|
||||
address UserAddress?
|
||||
preferences UserPreference?
|
||||
created_at DateTime @default(now()) @db.Timestamptz()
|
||||
updated_at DateTime @updatedAt @db.Timestamptz()
|
||||
deleted_at DateTime? @db.Timestamptz()
|
||||
|
||||
countryId String? @db.Uuid
|
||||
oauth_accounts UserOauthAccounts[]
|
||||
sessions UserSession[]
|
||||
@@map("users")
|
||||
}
|
||||
|
||||
model UserAddress {
|
||||
user_id String @id @db.Uuid
|
||||
address String @db.VarChar(255)
|
||||
district String @db.VarChar(100)
|
||||
city String @db.VarChar(100)
|
||||
province String @db.VarChar(100)
|
||||
postal_code String @db.VarChar(20)
|
||||
coordinate String? @db.VarChar(50)
|
||||
updated_at DateTime @updatedAt @db.Timestamptz()
|
||||
|
||||
user User @relation(fields: [user_id], references: [id])
|
||||
@@map("user_addresses")
|
||||
}
|
||||
|
||||
model UserOauthAccounts {
|
||||
id String @id @db.Uuid @default(uuid(7))
|
||||
user User @relation(fields: [user_id], references: [id])
|
||||
provider_name auth_provider
|
||||
provider_sub String? @db.VarChar(255)
|
||||
provider_email String? @db.VarChar(255)
|
||||
provider_token String? @db.VarChar(255)
|
||||
refresh_token String? @db.VarChar(255)
|
||||
expires_at DateTime? @db.Timestamptz()
|
||||
last_login DateTime @default(now()) @db.Timestamptz()
|
||||
created_at DateTime @default(now()) @db.Timestamptz()
|
||||
updated_at DateTime @updatedAt @db.Timestamptz()
|
||||
|
||||
user_id String @db.Uuid
|
||||
@@map("user_oauth_accounts")
|
||||
}
|
||||
|
||||
model UserSession {
|
||||
id String @id @db.Uuid @default(uuid(7))
|
||||
user User @relation(fields: [user_id], references: [id])
|
||||
device_type device_type
|
||||
os_type String? @db.VarChar(50)
|
||||
os_version String? @db.VarChar(50)
|
||||
browser_name String? @db.VarChar(50)
|
||||
browser_version String? @db.VarChar(50)
|
||||
ip_login String? @db.Inet()
|
||||
login_at DateTime @default(now()) @db.Timestamptz()
|
||||
logout_at DateTime? @db.Timestamptz()
|
||||
|
||||
user_id String @db.Uuid
|
||||
@@map("user_sessions")
|
||||
}
|
||||
|
||||
model UserPreference {
|
||||
user_id String @id @db.Uuid
|
||||
// char_as_partner
|
||||
comment_picture String? @db.VarChar(255)
|
||||
enable_watch_history Boolean @default(true)
|
||||
enable_search_history Boolean @default(false)
|
||||
is_private_account Boolean @default(false)
|
||||
can_message_me Boolean @default(true)
|
||||
publish_birthday Boolean @default(false)
|
||||
publish_email Boolean @default(false)
|
||||
publish_phone_number Boolean @default(false)
|
||||
publish_country Boolean @default(false)
|
||||
publish_partner Boolean @default(true)
|
||||
subscribe_to_newsletter Boolean @default(true)
|
||||
enable_security_alerts Boolean @default(true)
|
||||
|
||||
user User @relation(fields: [user_id], references: [id])
|
||||
genre_preferences UserGenrePreference[]
|
||||
rating_preferences UserRatingPreference[]
|
||||
country_preferences UserCountryPreference[]
|
||||
@@map("user_preferences")
|
||||
}
|
||||
|
||||
model UserGenrePreference {
|
||||
user UserPreference @relation(fields: [user_id], references: [user_id])
|
||||
// genre Genre @relation(fields: [genre_id], references: [id])
|
||||
state user_preference_state
|
||||
|
||||
user_id String @db.Uuid
|
||||
genre_id String @db.Uuid
|
||||
@@id([user_id, genre_id])
|
||||
@@map("user_genre_preferences")
|
||||
}
|
||||
|
||||
model UserRatingPreference {
|
||||
user UserPreference @relation(fields: [user_id], references: [user_id])
|
||||
// rating Rating @relation(fields: [rating_id], references: [id])
|
||||
state user_preference_state
|
||||
|
||||
user_id String @db.Uuid
|
||||
rating_id String @db.Uuid
|
||||
@@id([user_id, rating_id])
|
||||
@@map("user_rating_preferences")
|
||||
}
|
||||
|
||||
model UserCountryPreference {
|
||||
user UserPreference @relation(fields: [user_id], references: [user_id])
|
||||
country Country @relation(fields: [country_id], references: [id])
|
||||
state user_preference_state
|
||||
|
||||
user_id String @db.Uuid
|
||||
country_id String @db.Uuid
|
||||
@@id([user_id, country_id])
|
||||
@@map("user_country_preferences")
|
||||
}
|
||||
|
||||
model Country {
|
||||
id String @id @db.Uuid @default(uuid(7))
|
||||
name String @db.VarChar(155)
|
||||
slug String @db.VarChar(165)
|
||||
code String @db.VarChar(3)
|
||||
flag String? @db.VarChar(255)
|
||||
banner String? @db.VarChar(255)
|
||||
|
||||
UserCountry User[] @relation("UserCountry")
|
||||
UserCountryPreference UserCountryPreference[]
|
||||
@@map("countries")
|
||||
}
|
||||
@ -1,16 +0,0 @@
|
||||
src/
|
||||
└── modules/
|
||||
└── movie/
|
||||
├── controller/
|
||||
│ ├── createMovie.controller.ts
|
||||
│ ├── getAllMovies.controller.ts
|
||||
│ ├── getSimilarByGenre.controller.ts
|
||||
├── services/
|
||||
│ ├── createMovie.service.ts
|
||||
│ ├── getAllMovies.service.ts
|
||||
│ ├── getSimilarByGenre.service.ts
|
||||
├── movie.model.ts
|
||||
├── movie.repository.ts
|
||||
├── movie.schema.ts
|
||||
├── movie.types.ts
|
||||
└── index.ts
|
||||
Reference in New Issue
Block a user