stem_postgres 0.1.0-alpha.4 copy "stem_postgres: ^0.1.0-alpha.4" to clipboard
stem_postgres: ^0.1.0-alpha.4 copied to clipboard

Postgres broker, result backend, and scheduler utilities for Stem.

stem_postgres #

pub package Dart License Buy Me A Coffee

Postgres broker, result backend, and scheduler helpers for the Stem runtime.

Install #

dart pub add stem_postgres

Add the core runtime if you haven't already:

dart pub add stem

Usage #

Direct enqueue #

import 'package:stem/stem.dart';
import 'package:stem_postgres/stem_postgres.dart';

Future<void> main() async {
  final registry = SimpleTaskRegistry()
    ..register(FunctionTaskHandler(name: 'demo.pg', handler: print));

  final broker = await PostgresBroker.connect(
    'postgresql://postgres:postgres@localhost:5432/stem',
  );
  final backend = await PostgresResultBackend.connect(
    'postgresql://postgres:postgres@localhost:5432/stem',
  );

  final stem = Stem(broker: broker, registry: registry, backend: backend);
  await stem.enqueue('demo.pg', args: {'name': 'Stem'});
}

Typed TaskDefinition #

import 'package:stem/stem.dart';
import 'package:stem_postgres/stem_postgres.dart';

final demoPg = TaskDefinition<PgArgs, void>(
  name: 'demo.pg',
  encodeArgs: (args) => {'name': args.name},
  metadata: TaskMetadata(description: 'Postgres-backed demo task'),
);

class PgArgs {
  const PgArgs({required this.name});
  final String name;
}

Future<void> main() async {
  final registry = SimpleTaskRegistry()
    ..register(
      FunctionTaskHandler<void>(
        name: demoPg.name,
        entrypoint: (context, args) async {
          print('Hello ${(args['name'] as String?) ?? 'world'}');
        },
        metadata: demoPg.metadata,
      ),
    );

  final broker = await PostgresBroker.connect(
    'postgresql://postgres:postgres@localhost:5432/stem',
  );
  final backend = await PostgresResultBackend.connect(
    'postgresql://postgres:postgres@localhost:5432/stem',
  );

  final stem = Stem(broker: broker, registry: registry, backend: backend);
  await stem.enqueueCall(demoPg(const PgArgs(name: 'Stem')));
}

Tests #

Postgres integration suites expect the docker stack provided by stem_cli:

source ../../stem_cli/_init_test_env
dart test

The tests skip automatically if STEM_TEST_POSTGRES_URL is missing.

0
likes
140
points
290
downloads

Publisher

unverified uploader

Weekly Downloads

Postgres broker, result backend, and scheduler utilities for Stem.

Repository (GitHub)
View/report issues

Documentation

API reference

License

unknown (license)

Dependencies

collection, path, postgres, stem, uuid

More

Packages that depend on stem_postgres