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.
- ColumnAlias
- Alias information for a column.
- CompiledRelations
- Compiled result containing JOIN clauses and column selection.
- CompositeQueryLogger
- A composite logger that delegates to multiple loggers.
- ConnectionInfo
- Connection information for a database.
- ConsoleQueryLogger
- A query logger that prints to the console.
- FieldInfo
- Information about a model field.
- FilterOperators
- Filter operators for WHERE clauses.
- IncludedRelation
- Information about an included relation.
- 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.
- MetricsQueryLogger
- A query logger that collects metrics.
- ModelSchema
- Schema definition for a Prisma model.
- NoOpQueryLogger
- A logger that does nothing.
- PostgresAdapter
- PostgreSQL database adapter.
- PostgresTransaction
- PostgreSQL transaction implementation.
- PrismaErrorMapper
- Maps database-specific error codes to PrismaException types.
- PrismaValue
- Special Prisma value types (DateTime, Json, Bytes, etc.).
- QueryEndEvent
- Event data for a completed query.
- QueryErrorEvent
- Event data for a failed query.
- QueryExecutor
- Executes Prisma queries against a database adapter.
- QueryLogger
- Interface for query logging.
- QueryMetric
- A single query execution metric.
- QueryStartEvent
- Event data for a query that is about to be executed.
- RelationCompiler
- Compiles Prisma include/select into SQL JOINs.
- RelationDeserializer
- Deserializes flat JOIN results into nested objects.
- RelationInfo
- Information about a relation between models.
- RelationMetadata
- Marker interface for relation metadata used in JOIN queries.
- SchemaRegistry
- Registry that stores model schemas and provides lookup methods.
- 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).
- RelationType
- Types of relations between models.
Extensions
- SchemaRegistryBuilder on SchemaRegistry
- Extension methods for building relation metadata.
Properties
- schemaRegistry → SchemaRegistry
-
Global schema registry instance.
final
Exceptions / Errors
- AdapterError
- Error thrown by database adapters.
- AuthenticationException
- Authentication failed.
- ConnectionException
- Database connection failed.
- ConnectionTimeoutException
- Connection timed out.
- ConstraintException
- Constraint violation (general).
- ForeignKeyException
- Foreign key constraint violation.
- InternalException
- Internal query engine error.
- InvalidFieldValueException
- Invalid field value.
- PrismaException
- Base class for all Prisma exceptions.
- QueryTimeoutException
- Query timeout.
- RecordNotFoundException
- Record not found.
- RelatedRecordNotFoundException
- Related record not found.
- RequiredFieldException
- Required value missing.
- TransactionException
- Transaction failed.
- UniqueConstraintException
- Unique constraint violation.
- UnsupportedOperationException
- Unsupported operation.