Database — SQLite
Finch ondersteunt SQLite via het sqlite3-pakket. Het deelt dezelfde API als MySQL — gebruik MTable/MField* voor schemadefinitie en Sqler voor queries.
Configuratie
FinchConfigs(
sqliteConfig: FinchSqliteConfig(
enable: true,
filePath: env['SQLITE_PATH'] ?? './app.sqlite',
),
)
Tabeldefinitie
// lib/db/sqlite_tables.dart
import 'package:finch/finch_sqlite.dart';
MTable postsTable = MTable(
tableName: 'posts',
fields: [
MFieldId(),
MFieldString(name: 'title', length: 255),
MFieldText(name: 'body'),
MFieldBool(name: 'published', defaultValue: false),
MFieldTimestamp(name: 'created_at', defaultNow: true),
],
);
Queries met Sqler
Dezelfde API als MySQL — gebruik alleen sqliteDb in plaats van mysqlDb:
import 'package:finch/finch_sqlite.dart';
var sqler = Sqler(table: postsTable, db: sqliteDb);
// Alle gepubliceerde berichten ophalen
var posts = await sqler
.where('published', '=', true)
.orderBy('created_at', desc: true)
.get();
// Invoegen
var id = await sqler.insert({
'title': 'Eerste bericht',
'body': 'Berichtinhoud...',
'published': true,
});
// Bijwerken
await sqler.where('id', '=', id).update({'published': false});
// Verwijderen
await sqler.where('id', '=', id).delete();
SQLite-migraties
Gebruik de --sqlite-vlag voor het migrate-commando:
# SQLite-migraties toepassen
finch migrate --init --sqlite
# Nieuw SQLite-migratiebestand aanmaken
finch migrate --create --name add_posts_table --sqlite
Migratiebestanden bevinden zich in pathMigrationSQLite (standaard: ./migrations_sqlite/).
Verschil met MySQL
| Functie | MySQL | SQLite |
|---|---|---|
| Driver-import | finch_mysql.dart |
finch_sqlite.dart |
| db-parameter | mysqlDb |
sqliteDb |
| Migratie-vlag | (geen vlag) | --sqlite |
| Migratiemap | ./migrations |
./migrations_sqlite |
| Opslag | Afzonderlijke server | Lokaal .sqlite-bestand |