docs(agile): initialize docs
This commit is contained in:
59
docs/architecture/database-architecture.md
Normal file
59
docs/architecture/database-architecture.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# 4. Database Architecture (Revised with Prisma)
|
||||
|
||||
The database schema will be defined declaratively using the Prisma schema language in a single source of truth file: `prisma/schema.prisma`. Prisma will be responsible for generating SQL migrations and providing a type-safe client for all database interactions.
|
||||
|
||||
## Prisma Schema (`prisma/schema.prisma`)
|
||||
|
||||
```prisma
|
||||
// This is your Prisma schema file,
|
||||
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client-js"
|
||||
}
|
||||
|
||||
datasource db {
|
||||
provider = "postgresql"
|
||||
url = env("DATABASE_URL")
|
||||
}
|
||||
|
||||
// User-friendly metadata associated with a public key.
|
||||
model Registry {
|
||||
publicKey String @id
|
||||
citizenName String
|
||||
avatarUrl String?
|
||||
isActive Boolean @default(true)
|
||||
createdAt DateTime @default(now())
|
||||
}
|
||||
|
||||
// The core, immutable data model.
|
||||
// Once a row is written, it is never updated or deleted.
|
||||
model LedgerEntry {
|
||||
id BigInt @id @default(autoincrement())
|
||||
previousHash String?
|
||||
entryHash String @unique
|
||||
citizenPublicKey String
|
||||
signature String
|
||||
actionType String
|
||||
payload Json? // The actual data for the action, e.g., cell details
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@index([citizenPublicKey])
|
||||
@@index([payload], name: "idx_ledger_payload_entity") // Example for indexing specific payload keys
|
||||
}
|
||||
```
|
||||
|
||||
## Migrations Workflow
|
||||
|
||||
Database migrations will be managed exclusively by Prisma Migrate.
|
||||
1. **Development:** After any change to `schema.prisma`, a new migration will be created and applied using the command:
|
||||
```bash
|
||||
npx prisma migrate dev --name <descriptive_migration_name>
|
||||
```
|
||||
2. **Production:** Migrations will be applied during the deployment process using:
|
||||
```bash
|
||||
npx prisma migrate deploy
|
||||
```
|
||||
This ensures that the database schema is always in sync with the Prisma schema definition.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user