feat: ✨ Added Sqlite reader
This commit is contained in:
75
pkg/readers/sqlite/README.md
Normal file
75
pkg/readers/sqlite/README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# SQLite Reader
|
||||
|
||||
Reads database schema from SQLite database files.
|
||||
|
||||
## Usage
|
||||
|
||||
```go
|
||||
import (
|
||||
"git.warky.dev/wdevs/relspecgo/pkg/readers"
|
||||
"git.warky.dev/wdevs/relspecgo/pkg/readers/sqlite"
|
||||
)
|
||||
|
||||
// Using file path
|
||||
options := &readers.ReaderOptions{
|
||||
FilePath: "path/to/database.db",
|
||||
}
|
||||
|
||||
reader := sqlite.NewReader(options)
|
||||
db, err := reader.ReadDatabase()
|
||||
|
||||
// Or using connection string
|
||||
options := &readers.ReaderOptions{
|
||||
ConnectionString: "path/to/database.db",
|
||||
}
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
- Reads tables with columns and data types
|
||||
- Reads views with definitions
|
||||
- Reads primary keys
|
||||
- Reads foreign keys with CASCADE actions
|
||||
- Reads indexes (non-auto-generated)
|
||||
- Maps SQLite types to canonical types
|
||||
- Derives relationships from foreign keys
|
||||
|
||||
## SQLite Specifics
|
||||
|
||||
- SQLite doesn't support schemas, creates single "main" schema
|
||||
- Uses pure Go driver (modernc.org/sqlite) - no CGo required
|
||||
- Supports both file path and connection string
|
||||
- Auto-increment detection for INTEGER PRIMARY KEY columns
|
||||
- Foreign keys require `PRAGMA foreign_keys = ON` to be set
|
||||
|
||||
## Example Schema
|
||||
|
||||
```sql
|
||||
PRAGMA foreign_keys = ON;
|
||||
|
||||
CREATE TABLE users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
email VARCHAR(100) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE posts (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL,
|
||||
title VARCHAR(200) NOT NULL,
|
||||
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
||||
);
|
||||
```
|
||||
|
||||
## Type Mappings
|
||||
|
||||
| SQLite Type | Canonical Type |
|
||||
|-------------|---------------|
|
||||
| INTEGER, INT | int |
|
||||
| BIGINT | int64 |
|
||||
| REAL, DOUBLE | float64 |
|
||||
| TEXT, VARCHAR | string |
|
||||
| BLOB | bytea |
|
||||
| BOOLEAN | bool |
|
||||
| DATE | date |
|
||||
| DATETIME, TIMESTAMP | timestamp |
|
||||
Reference in New Issue
Block a user