supabase_schema_generator 0.0.1
supabase_schema_generator: ^0.0.1 copied to clipboard
A code generator for supabase_schema to generate Supabase schema definitions.
supabase_schema_generator #
The code generator for the Supabase Schema Library. This package processes your schema definitions and generates type-safe Dart models (using freezed), strongly-typed IDs, and smart select statements.
Installation #
Add this package to your dev_dependencies in pubspec.yaml:
dev_dependencies:
supabase_schema_generator: latest_version
build_runner: latest_version
freezed: latest_version
json_serializable: latest_version
How it Works #
- Define Schema: You define your schema using
supabase_schemaclasses. - Run Builder: You run
dart run build_runner build. - Generate Code: This generator reads your schema and produces a
.supabase.dartfile containing:- Freezed Models: Immutable data classes with JSON serialization.
- Typed IDs:
extension typewrappers around IDs (e.g.,UserId) for type safety. - Constants: Table names, column keys.
- Select Columns: A smart getter
selectColumnsthat generates the correct Supabase select string, including nested joins.
Generated Code Example #
For a User model, it generates:
extension type UserId._(int id) {
factory UserId.fromJson(dynamic value) => ...
int toJson() => id;
}
@freezed
sealed class User with _$User {
const factory User({
@JsonKey(name: "id") required UserId id,
@JsonKey(name: "name") required String name,
// ...
}) = _User;
static const String tableName = "users";
// Smart select string with joins
static String get selectColumns => 'id,name,...';
}