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