prisma_flutter_connector 0.1.5
prisma_flutter_connector: ^0.1.5 copied to clipboard
A type-safe Flutter connector for Prisma backends. Generate Dart models and type-safe APIs from your Prisma schema with support for PostgreSQL, MySQL, SQLite, and Supabase.
Changelog #
All notable changes to the Prisma Flutter Connector.
[Unreleased] #
0.1.5 - 2025-12-18 #
Fixed #
- Enum Comment Stripping - Parser now correctly strips inline comments from enum values
- Prisma Type Conversion - Fixed
Int→int,Float/Decimal→double,Json→Map<String, dynamic>,Bytes→List<int> - Runtime Defaults - Skip
uuid(),now(),autoincrement(),dbgenerated()for@Defaultannotation - Reserved Keywords - Enum values like
classare renamed toclassValueto avoid Dart conflicts - Relation Fields - Excluded from
Create/Updateinput types (handled separately) - Enum Imports - Filter types now properly import all enum definitions
- toSnakeCase Bug - Use
replaceFirstinstead ofsubstring(1)to safely handle edge cases - Const Constructor - Added
consttoConnectionSettingsin Supabase adapter
Changed #
- DRY Refactor - Extracted
toSnakeCase,toCamelCase,toLowerCamelCaseto sharedstring_utils.dart - Performance - Use
const Setinstead ofListforruntimeFunctionslookup (O(1) vs O(n))
0.1.4 - 2025-12-16 #
Fixed #
- PostgreSQL Enum Type Handling - Fixed
UndecodedByteserror when querying tables with enum columns- PostgreSQL custom types (enums like
UserRole,Gender, etc.) are now properly decoded to strings - Added
_convertValuehelper in PostgresAdapter to handleUndecodedBytesfrom the postgres package
- PostgreSQL custom types (enums like
0.1.3 - 2025-12-16 #
Added #
- Server Runtime Support - New
runtime_server.dartentry point for pure Dart server environments- Use
import 'package:prisma_flutter_connector/runtime_server.dart'in Dart Frog, Shelf, or other server frameworks - Exports only PostgreSQL and Supabase adapters (no Flutter/sqflite dependencies)
- Fixes "dart:ui not available" errors when using the package in server environments
- Use
Why This Matters #
The main runtime.dart exports the SQLite adapter which depends on sqflite (a Flutter plugin).
When imported in pure Dart servers, this caused compilation errors because sqflite imports dart:ui.
Now you can:
- Use
runtime_server.dartfor Dart servers (Dart Frog, Shelf, etc.) - Use
runtime.dartfor Flutter apps (includes SQLite for offline-first mobile)
Usage #
// In Dart Frog backend:
import 'package:prisma_flutter_connector/runtime_server.dart';
// In Flutter app:
import 'package:prisma_flutter_connector/runtime.dart';
0.1.2 - 2025-12-14 #
0.1.1 - 2025-12-14 #
Added #
- Automated publishing via GitHub Actions (OIDC authentication)
- pub.flutter-io.cn package metadata (topics, homepage, repository)
Changed #
- Renamed
docs/todoc/(pub.flutter-io.cn convention) - Renamed
examples/toexample/(pub.flutter-io.cn convention) - Renamed
Readme.mdtoREADME.md(pub.flutter-io.cn convention)
Removed #
- Removed prisma-submodule (not needed for package users)
0.1.0 - 2025-12-14 #
🎉 MAJOR: Architecture Transformation - True Prisma-Style ORM for Dart #
This release represents a revolutionary transformation from a GraphQL client generator to a true Prisma-style ORM for Dart/Flutter - enabling direct database access similar to how Prisma works in TypeScript/Next.js!
✨ Added - Direct Database Access #
Database Adapter System
SqlDriverAdapterinterface - Database-agnostic query executionPostgresAdapter- Direct PostgreSQL connection (postgrespackage)SupabaseAdapter- Direct Supabase connection (no backend!)SQLiteAdapter- Mobile offline-first support (sqflite)- Full transaction support with ACID guarantees
- Connection pooling and type conversion
Query System
- JSON Protocol - Prisma's query protocol in pure Dart
- SQL Compiler - Converts JSON queries → Parameterized SQL
- Query Executor - Runtime execution with type-safe results
- Filter Operators - WHERE clauses (equals, in, contains, lt, gt, etc.)
✅ Validated with Real Database #
All CRUD operations tested and working with Supabase:
- ✅ CREATE - Insert with UUID generation
- ✅ READ - findMany, findUnique with complex filters
- ✅ UPDATE - Modify records
- ✅ DELETE - Remove records
- ✅ COUNT - Aggregate queries
- ✅ FILTER - Complex WHERE with AND/OR/NOT
- ✅ Transactions - Atomic operations with rollback
🚀 Key Benefits #
- No Backend Required - Connect directly from Dart to databases
- Offline-First - SQLite adapter for mobile apps
- Type-Safe - Parameterized queries with full type conversion
- Database-Agnostic - Swap adapters without code changes
- Better Performance - No HTTP/GraphQL overhead
- Familiar DX - Same API as Prisma in TypeScript
📦 New Dependencies #
dependencies:
postgres: ^3.0.0 # PostgreSQL support
sqflite: ^2.3.0 # Mobile SQLite support
supabase_flutter: ^2.5.0 # Supabase integration
📁 New Files #
Runtime Library:
lib/runtime.dart- Main runtime exportlib/src/runtime/adapters/types.dart- Core typeslib/src/runtime/adapters/postgres_adapter.dartlib/src/runtime/adapters/supabase_adapter.dartlib/src/runtime/adapters/sqlite_adapter.dartlib/src/runtime/query/json_protocol.dartlib/src/runtime/query/sql_compiler.dartlib/src/runtime/query/query_executor.dart
Examples & Tests:
test/validation/crud_validation.dart- Full CRUD validationexample/adapter_example.dart- Usage examples
💻 Usage Example #
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'),
);
final adapter = PostgresAdapter(connection);
final executor = QueryExecutor(adapter: adapter);
// Build query
final query = JsonQueryBuilder()
.model('User')
.action(QueryAction.findMany)
.where({'email': FilterOperators.contains('@example.com')})
.orderBy({'createdAt': 'desc'})
.build();
// Execute
final users = await executor.executeQueryAsMaps(query);
print('Found ${users.length} users');
🗺️ Roadmap #
Phase 3: Code Generation (Next)
- Update generator to produce adapter-based client
- Type-safe generated client from Prisma schema
- Auto-generated CRUD methods per model
Phase 4: Advanced Features
- Relation loading (include, select)
- Nested writes
- Aggregations (avg, sum, min, max)
- Raw SQL queries
Phase 5: Publication
- pub.flutter-io.cn release
- Comprehensive documentation
- Example applications
0.1.0 - 2025-11-01 #
Added #
- Initial release of Prisma Flutter Connector
- GraphQL client integration using Ferry
- Type-safe models with Freezed
- E-commerce example (Product, Order, User models)
- Basic CRUD operations (queries and mutations)
- Error handling with custom exceptions
- Backend example using Prisma + Pothos + Apollo Server
- Comprehensive documentation
Architecture #
- GraphQL API protocol (chosen over REST for better Prisma integration)
- Pothos for GraphQL schema generation from Prisma
- Ferry for type-safe Dart code generation
- No offline caching in v0.1.0 (planned for v0.2.0)