convert_xml_plan_to_json/plans_migration.ts
2026-03-17 17:15:20 +03:00

108 lines
6.1 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ─────────────────────────────────────────────────────────────────────────────
// 1. Подключение к базе данных и генерация клиента
// ─────────────────────────────────────────────────────────────────────────────
datasource db {
provider = "postgresql" // можно заменить на mysql, sqlite и др.
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}
// ─────────────────────────────────────────────────────────────────────────────
// 2. Модели
// ─────────────────────────────────────────────────────────────────────────────
// Метаданные приложения (верхняя часть JSONфайла)
model AppInfo {
id Int @id @default(autoincrement())
version String? // "НомерВерсииПриложения"
appName String? // "ИмяПриложения"
userId String? // "НомерПользователя"
userName String? // "ИмяПользователя"
fileName String? // "ИмяФайла"
protocolNumber String? // "НомПротокСовета"
note String? // "Примечание"
yearStart String? // "ГодНачалаПодготовки"
typeGOS String? // "ТипГОСа"
activeOOPCode String? // "КодАктивногоООП"
zPerWeek Float? // "ЗЕТвНеделю"
precision Float? // "Точность"
isDvig Boolean @default(false) // "ДвИГА"
isGvig Boolean @default(false) // "ГвИГА"
semestersOnCourse Int? // "СеместровНаКурсе"
creditsHours Int? // "ЧасовВКредите"
isIndividual Boolean @default(false) // "Индивидуальный"
fullName String? // "ФИО"
isMilitary Boolean @default(false) // "Военные"
educationLevel Int? // "КодУровняОбразования"
planTypeCode Int? // "КодТипаПлана"
loadStatus Int? // "СтатусВНагрузке"
studiedHours Int? // "ИзученоКонтЧасов"
hideRPD Boolean @default(false) // "СкрытьВРПД"
hideOnSite Boolean @default(false) // "СкрытьНаСайте"
minAppVersion String? // "MinAppVersion"
}
// Заезды (массив "Заезды")
model Ride {
id Int @id @default(autoincrement())
diffgrId String @map("diffgr:id") // "diffgr:id"
rowOrder Int @map("msdata:rowOrder") // "msdata:rowOrder"
code Int // "Код"
course Int // "Курс"
session Int // "Сессия"
title String? // "Название"
duration Int // "Продолжительность"
planCode Int @map("КодПлана") // "КодПлана"
// При необходимости можно связать заезды с Планом
plan Plan? @relation(fields: [planId], references: [id])
planId Int?
}
// План компетенций (опциональная справочная модель)
model Plan {
id Int @id @default(autoincrement())
code Int @unique // "Код"
oopCode Int? @map("КодООП") // "КодООП"
abbreviation String? @map("ШифрКомпетенции") // "ШифрКомпетенции"
name String? @map("Наименование") // "Наименование"
number String? @map("Номер") // "Номер"
type Int? @map("Тип") // (не встречается в примерах, но оставлено)
view Int? @map("Вид") // (не встречается в примерах, но оставлено)
source String? @map("Источник") // "Источник"
category String? @map("Категория") // "Категория"
// Связанные компетенции и заезды
competencies Competency[]
rides Ride[]
}
// Планы компетенций (массив "ПланыКомпетенции")
model Competency {
id Int @id @default(autoincrement())
diffgrId String @map("diffgr:id") // "diffgr:id"
rowOrder Int @map("msdata:rowOrder") // "msdata:rowOrder"
code Int // "Код"
oopCode Int? @map("КодООП") // "КодООП"
abbreviation String? @map("ШифрКомпетенции") // "ШифрКомпетенции"
name String? @map("Наименование") // "Наименование"
number String? @map("Номер") // "Номер"
planCode Int @map("КодПлана") // "КодПлана"
isDeleted Boolean @map("Удалена") @default(false) // "Удалена"
source String? @map("Источник") // "Источник"
category String? @map("Категория") // "Категория"
parentCode Int? @map("КодРодителя") // "КодРодителя"
// Иерархия «родитель‑дети» (само‑референция)
parentId Int?
parent Competency? @relation("Children", fields: [parentId], references: [id])
children Competency[] @relation("Children")
// Связь с Планом (если в дальнейшем план будет отдельной сущностью)
planId Int?
plan Plan? @relation(fields: [planId], references: [id])
}