95 lines
3.1 KiB
Plaintext
95 lines
3.1 KiB
Plaintext
// 화면관리 시스템 Prisma 스키마
|
|
// 기존 schema.prisma에 추가할 모델들
|
|
|
|
model screen_definitions {
|
|
screen_id Int @id @default(autoincrement())
|
|
screen_name String @db.VarChar(100)
|
|
screen_code String @unique @db.VarChar(50)
|
|
table_name String @db.VarChar(100)
|
|
company_code String @db.VarChar(50)
|
|
description String? @db.Text
|
|
is_active String @default("Y") @db.Char(1)
|
|
created_date DateTime @default(now()) @db.Timestamp(6)
|
|
created_by String? @db.VarChar(50)
|
|
updated_date DateTime @default(now()) @db.Timestamp(6)
|
|
updated_by String? @db.VarChar(50)
|
|
|
|
// 관계
|
|
layouts screen_layouts[]
|
|
menu_assignments screen_menu_assignments[]
|
|
|
|
@@index([company_code])
|
|
}
|
|
|
|
model screen_layouts {
|
|
layout_id Int @id @default(autoincrement())
|
|
screen_id Int
|
|
component_type String @db.VarChar(50)
|
|
component_id String @unique @db.VarChar(100)
|
|
parent_id String? @db.VarChar(100)
|
|
position_x Int
|
|
position_y Int
|
|
width Int
|
|
height Int
|
|
properties Json?
|
|
display_order Int @default(0)
|
|
created_date DateTime @default(now()) @db.Timestamp(6)
|
|
|
|
// 관계
|
|
screen screen_definitions @relation(fields: [screen_id], references: [screen_id], onDelete: Cascade)
|
|
widgets screen_widgets[]
|
|
|
|
@@index([screen_id])
|
|
}
|
|
|
|
model screen_widgets {
|
|
widget_id Int @id @default(autoincrement())
|
|
layout_id Int
|
|
table_name String @db.VarChar(100)
|
|
column_name String @db.VarChar(100)
|
|
widget_type String @db.VarChar(50)
|
|
label String? @db.VarChar(200)
|
|
placeholder String? @db.VarChar(200)
|
|
is_required Boolean @default(false)
|
|
is_readonly Boolean @default(false)
|
|
validation_rules Json?
|
|
display_properties Json?
|
|
created_date DateTime @default(now()) @db.Timestamp(6)
|
|
|
|
// 관계
|
|
layout screen_layouts @relation(fields: [layout_id], references: [layout_id], onDelete: Cascade)
|
|
|
|
@@index([layout_id])
|
|
}
|
|
|
|
model screen_templates {
|
|
template_id Int @id @default(autoincrement())
|
|
template_name String @db.VarChar(100)
|
|
template_type String @db.VarChar(50)
|
|
company_code String @db.VarChar(50)
|
|
description String? @db.Text
|
|
layout_data Json?
|
|
is_public Boolean @default(false)
|
|
created_by String? @db.VarChar(50)
|
|
created_date DateTime @default(now()) @db.Timestamp(6)
|
|
|
|
@@index([company_code])
|
|
}
|
|
|
|
model screen_menu_assignments {
|
|
assignment_id Int @id @default(autoincrement())
|
|
screen_id Int
|
|
menu_objid Decimal @db.Decimal
|
|
company_code String @db.VarChar(50)
|
|
display_order Int @default(0)
|
|
is_active String @default("Y") @db.Char(1)
|
|
created_date DateTime @default(now()) @db.Timestamp(6)
|
|
created_by String? @db.VarChar(50)
|
|
|
|
// 관계
|
|
screen screen_definitions @relation(fields: [screen_id], references: [screen_id], onDelete: Cascade)
|
|
|
|
@@unique([screen_id, menu_objid, company_code])
|
|
@@index([company_code])
|
|
}
|