60 lines
2.7 KiB
Plaintext
60 lines
2.7 KiB
Plaintext
generator client {
|
|
provider = "prisma-client"
|
|
output = "./generated"
|
|
}
|
|
|
|
generator json {
|
|
provider = "prisma-json-types-generator"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
schemas = ["core", "meta", "platform", "auth"]
|
|
}
|
|
|
|
/*
|
|
# CVSA (Chinese Vocal Synthesis Archive) Database Schema
|
|
|
|
## Overview
|
|
The CVSA is a structured encyclopedia and data platform dedicated to the Chinese Vocal Synthesis (SVS/VC) community.
|
|
It aims to bridge the gap between traditional wikis (like MediaWiki) and structured databases by providing:
|
|
- Automation: Fully automated song discovery, metadata extraction, and statistical tracking.
|
|
- Structured Data: Moving beyond flat text to rich, relational data for songs, artists, engines, and albums.
|
|
- Collaboration: A platform for contributors to provide descriptive content, translations, and corrections.
|
|
|
|
## Schemas
|
|
The database is partitioned into several PostgreSQL schemas.
|
|
|
|
### A. [core] - The Encyclopedia
|
|
This is the heart of the project. It stores universal SVS data that remains objective across platforms.
|
|
- Entities: Songs, Singers (virtual characters), Artists (producers/illustrators),
|
|
SVS Engines (Vocaloid, Synthesizer V), Voicebanks, Albums, and Tags.
|
|
- Localization: Uses `LocalizedField` (JSON) to support multi-language metadata
|
|
(Simplified Chinese, Traditional Chinese, Japanese, English, etc.).
|
|
- Versioning: Supports tracking of specific SVS engine versions and voicebank iterations.
|
|
|
|
### B. [platform] - The Service Layer
|
|
Contains data specific to the CVSA website as a functional service.
|
|
- Features: User-uploaded files, personal notes, etc.
|
|
- Scope: Data here is specific to this implementation and not necessarily shared with other archives.
|
|
|
|
### C. [auth] - Identity & Access
|
|
Handles user accounts, session persistence, and secure authentication.
|
|
- RBAC: Connects users to roles defined in the `meta` schema.
|
|
|
|
### D. [meta] - Governance & Auditing
|
|
Manages the "data about data."
|
|
- Audit Logs: The `History` table tracks every mutation (Create/Update/Delete)
|
|
in the `core` schema for accountability and rollbacks.
|
|
- Permissions: Granular action-based permissions assigned to roles.
|
|
|
|
## 3. Technical Constraints & Design Patterns
|
|
- Soft Deletion: Most core entities implement a `deletedAt` timestamp for soft-deletion support.
|
|
- Modular Relations: Many-to-Many relations are extracted into separate files
|
|
within the `/relations` directory to keep entity definitions clean and prevent Prisma file bloat.
|
|
|
|
## 4. Current Status & TODO
|
|
- Indexing: Performance indexes and unique constraints beyond primary keys are still under design.
|
|
- Constraints: Complex business logic constraints (e.g., preventing circular tag parents) are handled at the application layer.
|
|
|
|
*/ |