# RelSpec - TODO List

## Input Readers / Writers

- [✔️] **Database Inspector**
  - [✔️] PostgreSQL driver (reader + writer)
  - [ ] MySQL driver
  - [✔️] SQLite driver (reader + writer with automatic schema flattening)
  - [ ] MSSQL driver
  - [✔️] Foreign key detection
  - [✔️] Index extraction
  - [✔️] .sql file generation (PostgreSQL, SQLite)
- [✔️] .dbml: Database Markup Language (DBML) for textual schema representation.
- [✔️] Prisma schema support (PSL format) .prisma
- [✔️] Drizzle ORM support .ts (TypeScript / JavaScript) (Mr. Edd wanted to move from Prisma to Drizzle. If you are bugs, you are welcome to do pull requests or issues)
- [☠️] Entity Framework (.NET) model .edmx (Fuck no, EDMX files were bloated, verbose XML nightmares—hard to merge, error-prone, and a pain in teams. Microsoft wisely ditched them in EF Core for code-first. Classic overkill from old MS era.)
- [✔️] TypeORM support
- [] .hbm.xml / schema.xml: Hibernate/Propel mappings (Java/PHP) (💲 Someone can do this, not me)
- [ ] Django models.py (Python classes), Sequelize migrations (JS) (💲 Someone can do this, not me)
- [] .avsc: Avro schema (JSON format for data serialization) (💲 Someone can do this, not me)
- [✔️] GraphQL schema generation

## UI

- [✔️] Basic UI (I went with tview)
- [✔️] Save / Load Database
- [✔️] Schemas / Domains / Tables
- [✔️] Add Relations
- [ ] Add Indexes
- [ ] Add Views
- [ ] Add Sequences
- [ ] Add Scripts
- [ ] Domain / Table Assignment

## Documentation

- [✔️] API documentation (godoc)
- [ ] Usage examples for each format combination

## Advanced Features

- [ ] Dry-run mode for validation
- [x] Diff tool for comparing specifications
- [ ] Migration script generation
- [ ] Custom type mapping configuration
- [ ] Batch processing support
- [ ] Watch mode for auto-regeneration

## Future Considerations

- [ ] Web UI for visual editing
- [ ] REST API server mode
- [ ] Support for NoSQL databases

## Performance

- [ ] Concurrent processing for multiple tables
- [ ] Streaming for large databases
- [ ] Memory optimization
- [ ] Caching layer for repeated operations
