feat: stabilize admin dashboard, refactor group management, implement PWA, and fix routing
This commit is contained in:
+40
-34
@@ -8,20 +8,19 @@ datasource db {
|
||||
}
|
||||
|
||||
model User {
|
||||
id String @id @default(cuid())
|
||||
email String @unique
|
||||
username String @unique
|
||||
password String
|
||||
role String @default("user")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
profile Profile?
|
||||
canvases Canvas[]
|
||||
groupMembers GroupMember[]
|
||||
id String @id @default(cuid())
|
||||
email String @unique
|
||||
username String @unique
|
||||
password String
|
||||
role String @default("user")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
activities Activity[]
|
||||
followers Follow[] @relation("following")
|
||||
following Follow[] @relation("follower")
|
||||
canvases Canvas[]
|
||||
following Follow[] @relation("follower")
|
||||
followers Follow[] @relation("following")
|
||||
groupMembers GroupMember[]
|
||||
profile Profile?
|
||||
}
|
||||
|
||||
model Profile {
|
||||
@@ -34,8 +33,7 @@ model Profile {
|
||||
followerCount Int @default(0)
|
||||
followingCount Int @default(0)
|
||||
joinedAt DateTime @default(now())
|
||||
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
}
|
||||
|
||||
model Canvas {
|
||||
@@ -48,22 +46,22 @@ model Canvas {
|
||||
edges Json @default("[]")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)
|
||||
group Group? @relation(fields: [groupId], references: [id], onDelete: SetNull)
|
||||
group Group? @relation(fields: [groupId], references: [id])
|
||||
owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)
|
||||
}
|
||||
|
||||
model Group {
|
||||
id String @id @default(cuid())
|
||||
id String @id @default(cuid())
|
||||
name String
|
||||
description String @default("")
|
||||
isPublic Boolean @default(true)
|
||||
description String @default("")
|
||||
isPublic Boolean @default(true)
|
||||
ownerId String
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
members GroupMember[]
|
||||
canvases Canvas[]
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
controlType String? @default("REMOTE")
|
||||
canvases Canvas[]
|
||||
members GroupMember[]
|
||||
Kiosk Kiosk[]
|
||||
}
|
||||
|
||||
model GroupMember {
|
||||
@@ -72,9 +70,8 @@ model GroupMember {
|
||||
groupId String
|
||||
role String @default("member")
|
||||
joinedAt DateTime @default(now())
|
||||
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
group Group @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
||||
group Group @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([userId, groupId])
|
||||
}
|
||||
@@ -87,8 +84,7 @@ model Activity {
|
||||
targetType String
|
||||
timestamp DateTime @default(now())
|
||||
metadata String?
|
||||
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
}
|
||||
|
||||
model Follow {
|
||||
@@ -96,9 +92,19 @@ model Follow {
|
||||
followerId String
|
||||
followingId String
|
||||
since DateTime @default(now())
|
||||
|
||||
follower User @relation("follower", fields: [followerId], references: [id], onDelete: Cascade)
|
||||
following User @relation("following", fields: [followingId], references: [id], onDelete: Cascade)
|
||||
follower User @relation("follower", fields: [followerId], references: [id], onDelete: Cascade)
|
||||
following User @relation("following", fields: [followingId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([followerId, followingId])
|
||||
}
|
||||
|
||||
model Kiosk {
|
||||
id String @id
|
||||
name String
|
||||
location String?
|
||||
groupId String
|
||||
status String @default("offline")
|
||||
lastSeen DateTime @default(now())
|
||||
createdAt DateTime @default(now())
|
||||
Group Group @relation(fields: [groupId], references: [id])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user