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 {
|
datasource db {
|
||||||
provider = "postgresql"
|
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