prisma_flutter_connector 0.1.5 copy "prisma_flutter_connector: ^0.1.5" to clipboard
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 Intint, Float/Decimaldouble, JsonMap<String, dynamic>, BytesList<int>
  • Runtime Defaults - Skip uuid(), now(), autoincrement(), dbgenerated() for @Default annotation
  • Reserved Keywords - Enum values like class are renamed to classValue to avoid Dart conflicts
  • Relation Fields - Excluded from Create/Update input types (handled separately)
  • Enum Imports - Filter types now properly import all enum definitions
  • toSnakeCase Bug - Use replaceFirst instead of substring(1) to safely handle edge cases
  • Const Constructor - Added const to ConnectionSettings in Supabase adapter

Changed #

  • DRY Refactor - Extracted toSnakeCase, toCamelCase, toLowerCamelCase to shared string_utils.dart
  • Performance - Use const Set instead of List for runtimeFunctions lookup (O(1) vs O(n))

0.1.4 - 2025-12-16 #

Fixed #

  • PostgreSQL Enum Type Handling - Fixed UndecodedBytes error when querying tables with enum columns
    • PostgreSQL custom types (enums like UserRole, Gender, etc.) are now properly decoded to strings
    • Added _convertValue helper in PostgresAdapter to handle UndecodedBytes from the postgres package

0.1.3 - 2025-12-16 #

Added #

  • Server Runtime Support - New runtime_server.dart entry 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

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.dart for Dart servers (Dart Frog, Shelf, etc.)
  • Use runtime.dart for 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 #

Fixed #

  • Fixed const constructor compatibility issue in SupabaseAdapter for dependency downgrade testing
  • Updated dependency version constraints to allow latest versions (freezed_annotation, web_socket_channel)

Improved #

  • Added comprehensive dartdoc comments to public APIs

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/ to doc/ (pub.flutter-io.cn convention)
  • Renamed examples/ to example/ (pub.flutter-io.cn convention)
  • Renamed Readme.md to README.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

  • SqlDriverAdapter interface - Database-agnostic query execution
  • PostgresAdapter - Direct PostgreSQL connection (postgres package)
  • 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 #

  1. No Backend Required - Connect directly from Dart to databases
  2. Offline-First - SQLite adapter for mobile apps
  3. Type-Safe - Parameterized queries with full type conversion
  4. Database-Agnostic - Swap adapters without code changes
  5. Better Performance - No HTTP/GraphQL overhead
  6. 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 export
  • lib/src/runtime/adapters/types.dart - Core types
  • lib/src/runtime/adapters/postgres_adapter.dart
  • lib/src/runtime/adapters/supabase_adapter.dart
  • lib/src/runtime/adapters/sqlite_adapter.dart
  • lib/src/runtime/query/json_protocol.dart
  • lib/src/runtime/query/sql_compiler.dart
  • lib/src/runtime/query/query_executor.dart

Examples & Tests:

  • test/validation/crud_validation.dart - Full CRUD validation
  • example/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)
1
likes
0
points
1.11k
downloads

Publisher

unverified uploader

Weekly Downloads

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.

Repository (GitHub)
View/report issues

Topics

#prisma #orm #database #code-generation #graphql

Documentation

Documentation

License

unknown (license)

Dependencies

args, flutter, freezed_annotation, gql, graphql_flutter, json_annotation, mysql1, postgres, sqflite, supabase_flutter, web_socket_channel

More

Packages that depend on prisma_flutter_connector