stormberry 0.13.0 stormberry: ^0.13.0 copied to clipboard
A strongly-typed postgres ORM to provide easy bindings between your dart classes and postgres database.
Stormberry
A strongly-typed postgres ORM to provide easy bindings between your dart classes and postgres database. It supports all kinds of relations without any complex configuration.
This package is still in active development. If you have any feedback or feature requests, write me and issue on github.
Quick Start #
To get started, add stormberry
as a dependency and build_runner
as a dev dependency:
dart pub add stormberry
dart pub add build_runner --dev
In your code, specify an abstract class that should act as a table like this:
// This file is "model.dart"
import 'package:stormberry/stormberry.dart';
// Will be generated by stormberry
part 'model.schema.dart';
@Model()
abstract class User {
@PrimaryKey()
String get id;
String get name;
}
In order to generate the database code, run the following command:
dart run build_runner build
Tip: You'll need to re-run code generation each time you are making changes to your models.
During development, you can use watch
to automatically watch your changes: dart pub run build_runner watch
.
This will generate a .schema.dart
file that you should add as a part
to the original model file.
Before running your application, you have to migrate your database. To do this run:
dart run stormberry migrate
This will ask you for the connection details of your postgres database and then migrate
the database schema by adding the users
table.
To access your database from your application, create a Database
instance and use the users
repository like this:
void main() async {
var db = Database(
// connection parameters go here
);
// adds a user to the 'users' table
await db.users.insertOne(UserInsertRequest(id: 'abc', name: 'Alex'));
// finds a user by its 'id'
var user = await db.users.queryUser('abc');
assert(user.name == 'Alex');
}
Full Documentation #
See the full documentation here or jump directly to the topic you are looking for: