dorm_postgres_database 2.0.0-dev.4 copy "dorm_postgres_database: ^2.0.0-dev.4" to clipboard
dorm_postgres_database: ^2.0.0-dev.4 copied to clipboard

A PostgreSQL database engine for dORM applications that need persistent, relational data with typed queries and repositories.

example/lib/main.dart

import 'dart:io';

import 'package:dorm_framework/dorm_framework.dart';
import 'package:dorm_postgres_database/dorm_postgres_database.dart';
import 'package:postgres/postgres.dart';

import 'models.dart';

String _requiredEnvironment(String name) {
  final String? value = Platform.environment[name];
  if (value == null || value.isEmpty) {
    throw StateError('Set $name before running this example.');
  }
  return value;
}

Future<void> main() async {
  final Connection connection = await Connection.open(
    Endpoint(
      host: _requiredEnvironment('POSTGRES_HOST'),
      port: int.parse(_requiredEnvironment('POSTGRES_PORT')),
      database: _requiredEnvironment('POSTGRES_DATABASE'),
      username: _requiredEnvironment('POSTGRES_USERNAME'),
      password: _requiredEnvironment('POSTGRES_PASSWORD'),
    ),
  );

  try {
    await connection.execute('''
      CREATE TABLE IF NOT EXISTS users (
        id TEXT PRIMARY KEY,
        name TEXT NOT NULL
      )
    ''');
    await connection.execute('''
      CREATE TABLE IF NOT EXISTS posts (
        id TEXT PRIMARY KEY,
        title TEXT NOT NULL,
        user_id TEXT NOT NULL REFERENCES users(id)
      )
    ''');

    final Dorm<Query, OffsetPageRequest> dorm = Dorm(Engine(connection));
    final User user = await dorm.users.repository.put(
      Creation.auto<UserData, String>(
        dependency: const UserDependency(),
        data: const UserData(name: 'Ada'),
      ),
    );
    await dorm.posts.repository.push(
      Post(id: 'post-1', title: 'First post', userId: user.id),
    );

    final List<User> users = await dorm.users.repository.peekAll(
      Filter.text('Ad', field: UserEntity.fields.name),
    );
    final List<Join<User, Post>> posts = await dorm.relations.users.posts
        .peekAll();

    print('Users: ${users.map((item) => item.name).toList()}');
    print('Posts: ${posts.map((item) => item.right.title).toList()}');
  } finally {
    await connection.close();
  }
}
0
likes
0
points
195
downloads

Publisher

verified publisherenzosantos.dev

Weekly Downloads

A PostgreSQL database engine for dORM applications that need persistent, relational data with typed queries and repositories.

Homepage
Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

dorm_framework, postgres, uuid

More

Packages that depend on dorm_postgres_database