runtime library
Prisma Flutter Connector - Runtime Library
This library provides the runtime components for the Prisma Flutter Connector, enabling direct database access from Dart/Flutter applications without requiring a GraphQL backend.
Features
- Direct Database Access: Connect directly to PostgreSQL, MySQL, SQLite, and Supabase
- Type-Safe Queries: Build queries using Prisma's JSON protocol
- Multiple Adapters: Swap database providers easily
- Transaction Support: Full ACID transaction support
- Offline-First: Use SQLite adapter for mobile offline capabilities
Supported Databases
- PostgreSQL via
postgrespackage - Supabase (PostgreSQL with direct connection)
- SQLite via
sqflitepackage (mobile) - MySQL (coming soon)
Usage
import 'package:prisma_flutter_connector/runtime.dart';
import 'package:postgres/postgres.dart' as pg;
// Connect to database
final connection = await pg.Connection.open(
pg.Endpoint(
host: 'localhost',
database: 'mydb',
username: 'user',
password: 'password',
),
);
// Create adapter
final adapter = PostgresAdapter(connection);
final executor = QueryExecutor(adapter: adapter);
// Build and execute query
final query = JsonQueryBuilder()
.model('User')
.action(QueryAction.findMany)
.where({'email': FilterOperators.contains('@example.com')})
.orderBy({'createdAt': 'desc'})
.build();
final users = await executor.executeQueryAsMaps(query);
print('Found ${users.length} users');
Database Adapters
PostgreSQL
final adapter = PostgresAdapter(connection);
Supabase
final adapter = await SupabaseAdapter.fromConnectionString(
'postgresql://user:pass@host:6543/db?pgbouncer=true',
);
SQLite (Mobile)
final database = await openDatabase('app.db');
final adapter = SQLiteAdapter(database);
Transactions
await executor.executeInTransaction((tx) async {
await tx.executeMutation(createUserQuery);
await tx.executeMutation(createProfileQuery);
// Both succeed or both rollback
});
Classes
- BaseExecutor
- Abstract base class for query execution.
- ConnectionInfo
- Connection information for a database.
- FilterOperators
- Filter operators for WHERE clauses.
- JsonFieldSelection
- Selection for a specific field.
- JsonQuery
- Represents a complete JSON query in Prisma's format.
- JsonQueryArgs
- Arguments for a JSON query.
- JsonQueryBuilder
- Builder for constructing JSON queries.
- JsonSelection
- Field selection in a query.
- PostgresAdapter
- PostgreSQL database adapter.
- PostgresTransaction
- PostgreSQL transaction implementation.
- PrismaValue
- Special Prisma value types (DateTime, Json, Bytes, etc.).
- QueryExecutor
- Executes Prisma queries against a database adapter.
- SqlCompiler
- Compiles JSON queries to SQL.
- SqlDriverAdapter
- Main database adapter interface.
- SQLiteAdapter
- SQLite database adapter for mobile apps.
- SQLiteTransaction
- SQLite transaction implementation.
- SqlQuery
- Represents a SQL query with parameterized values and type information.
- SqlQueryable
- Interface for executing SQL queries (implemented by adapters and transactions).
- SqlResultSet
- Result set from a SQL query execution.
- SupabaseAdapter
- Supabase database adapter using direct PostgreSQL connection.
- Transaction
- Abstract interface for database transactions.
- TransactionExecutor
- Query executor for use within transactions.
Enums
- ArgType
- Type information for query arguments.
- ColumnType
- Column type information for result set columns.
- IsolationLevel
- Transaction isolation levels.
- QueryAction
- Query action types (matching Prisma's actions).
Exceptions / Errors
- AdapterError
- Error thrown by database adapters.