mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 22:34:56 +00:00
- Created TODO files for Testing, DBAL, Frontend, Packages, Database, and Lua Scripting. - Updated README with a quick reference table for all TODO files and their priorities. - Added specific tasks for improving testing coverage, implementing DBAL features, enhancing frontend components, and refining package management. - Included documentation tasks to ensure thorough coverage and clarity across all areas. - Implemented initial unit tests for the useAuth hook and improved password generation logic. - Enhanced package loader functionality to support modular package seed data retrieval. - Updated page renderer to include public role in permission checks. - Added comments for future unit tests in workflow engine and other critical areas.
142 lines
3.1 KiB
Markdown
142 lines
3.1 KiB
Markdown
# Prisma Database Setup
|
|
|
|
The MetaBuilder project now uses Prisma as its database layer, replacing the previous `spark.kv` key-value store.
|
|
|
|
## Quick Start
|
|
|
|
### 1. Install Dependencies
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### 2. Set up Environment Variables
|
|
Create a `.env` file in the root directory:
|
|
```env
|
|
DATABASE_URL="file:./dev.db"
|
|
```
|
|
|
|
### 3. Generate Prisma Client
|
|
```bash
|
|
npm run db:generate
|
|
```
|
|
|
|
### 4. Create/Update Database
|
|
```bash
|
|
npm run db:push
|
|
```
|
|
|
|
### 5. Start Development Server
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
## Database Schema
|
|
|
|
The Prisma schema is defined in `prisma/schema.prisma` and includes:
|
|
|
|
- **Users**: User accounts, credentials, and authentication
|
|
- **Content**: Workflows, Lua scripts, pages, and data schemas
|
|
- **Components**: UI component hierarchy and configurations
|
|
- **Packages**: Installed packages and their data
|
|
- **Tenancy**: Multi-tenant support and power transfers
|
|
- **Configuration**: SMTP, CSS classes, dropdown configs, and system settings
|
|
|
|
## npm Scripts
|
|
|
|
- `npm run db:generate` - Generate Prisma Client from schema
|
|
- `npm run db:push` - Push schema changes to database (dev)
|
|
- `npm run db:migrate` - Run migrations (production)
|
|
|
|
## Database Files
|
|
|
|
- `prisma/schema.prisma` - Database schema definition
|
|
- `prisma/migrations/` - Migration history
|
|
- `dev.db` - SQLite database file (gitignored)
|
|
- `src/lib/prisma.ts` - Prisma client singleton
|
|
- `src/lib/database.ts` - Database access layer
|
|
|
|
## Switching Database Providers
|
|
|
|
### PostgreSQL (Recommended for Production)
|
|
|
|
1. Update `prisma/schema.prisma`:
|
|
```prisma
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
```
|
|
|
|
2. Update `.env`:
|
|
```env
|
|
DATABASE_URL="postgresql://user:password@localhost:5432/metabuilder"
|
|
```
|
|
|
|
3. Run:
|
|
```bash
|
|
npm run db:push
|
|
```
|
|
|
|
### MySQL
|
|
|
|
1. Update `prisma/schema.prisma`:
|
|
```prisma
|
|
datasource db {
|
|
provider = "mysql"
|
|
url = env("DATABASE_URL")
|
|
}
|
|
```
|
|
|
|
2. Update `.env`:
|
|
```env
|
|
DATABASE_URL="mysql://user:password@localhost:3306/metabuilder"
|
|
```
|
|
|
|
3. Run:
|
|
```bash
|
|
npm run db:push
|
|
```
|
|
|
|
## Data Migration
|
|
|
|
If you have existing data from the old `spark.kv` system:
|
|
|
|
1. Export data (before migration):
|
|
```typescript
|
|
const jsonData = await Database.exportDatabase()
|
|
// Save to file
|
|
```
|
|
|
|
2. After Prisma setup, import:
|
|
```typescript
|
|
await Database.importDatabase(jsonData)
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Error: Cannot find module '@prisma/client'
|
|
Run: `npm run db:generate`
|
|
|
|
### Error: Database file doesn't exist
|
|
Run: `npm run db:push`
|
|
|
|
### Error: Database locked (SQLite)
|
|
Kill any processes using the database or restart your computer.
|
|
|
|
### Migration conflicts
|
|
Delete `prisma/migrations/` and `dev.db`, then run `npm run db:push`
|
|
|
|
## Production Deployment
|
|
|
|
1. Use PostgreSQL or MySQL (not SQLite)
|
|
2. Set `DATABASE_URL` environment variable
|
|
3. Run migrations: `npm run db:migrate`
|
|
4. Deploy application
|
|
|
|
## Additional Resources
|
|
|
|
- [Prisma Documentation](https://www.prisma.io/docs)
|
|
- [Prisma Schema Reference](https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference)
|
|
TODO: The migration guide link should be relative to docs/database (remove ./docs/).
|
|
- [Migration Guide](./docs/PRISMA_MIGRATION.md)
|