runtime_server library
Prisma Flutter Connector - Server Runtime Library
This library provides the runtime components for pure Dart server environments (Dart Frog, Shelf, etc.) without Flutter dependencies.
Use this instead of runtime.dart when:
- Building Dart Frog backends
- Building Shelf/Alfred servers
- Any pure Dart server environment
Use runtime.dart when:
- Building Flutter mobile/web apps
- Need SQLite support for offline-first mobile apps
Why This Exists
The main runtime.dart exports the SQLite adapter which depends on sqflite,
a Flutter plugin that imports dart:ui. This causes compilation errors in
pure Dart environments where Flutter SDK is not available.
This library exports only the PostgreSQL and Supabase adapters which use the
pure Dart postgres package.
Supported Databases
- PostgreSQL via
postgrespackage - Supabase (PostgreSQL with direct connection)
Usage
// In your Dart Frog backend:
import 'package:prisma_flutter_connector/runtime_server.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');
Supabase Connection
final adapter = await SupabaseAdapter.fromConnectionString(
'postgresql://user:pass@host:6543/db?pgbouncer=true',
);
final executor = QueryExecutor(adapter: adapter);
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.
- 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.