arangodb_repository 0.9.0 copy "arangodb_repository: ^0.9.0" to clipboard
arangodb_repository: ^0.9.0 copied to clipboard

discontinued
outdated

Concrete implementation of the nosql_repository package for the ArangoDB database.

example/example.dart

import 'package:arango_driver/arango_driver.dart';
import 'package:arangodb_repository/arangodb_repository.dart';

import 'principal.dart';
import 'recipe.dart';

void main(List<String> args) async {
  // first we create a connection to ArangoDB
  final db = _connectArangoDb();

  // now, we create a repository on that connection to the recipes collection.
  final repository = ArangoDbRepository<Recipe>(db, 'recipes');

  // first we need to create a principal to represent the
  // user performing the operations to the database
  final principal = Principal('Alice');

  var recipe = Recipe(
    title: 'Scrambled eggs',
    ingredients: [], //['6 eggs', 'salt', 'pepper', 'milk', 'olive oil'],
    steps: [
      'Whisk all the ingredients',
      'Pour a sliver of olive oil on the pan',
      'Add the mixture to the heated oil',
      'gently mix'
    ],
  );

  var map = _recipeToMap(recipe);

  // this following line will create a new recipe in
  // the database, so long has the 'create_recipe' permission.
  //map = await repository.create(map, principal, 'create_recipe');

  // we will assume that create returns a key in the _key field:
  //var key = map['_key'];
  var key = '210965';

  // and with that key we can retrieve the object again from
  // the database by using get
  map = await repository.get(key, principal, 'read_recipe');

  // which we finally convert again to a Recipe
  recipe = _recipeFromMap(map);
  print(recipe.title);
}

/// Serializes a recipe to a Map<String, dynamic>.
/// This method is dying to be code-generated
Map<String, dynamic> _recipeToMap(Recipe recipe) => {
      'title': recipe.title,
      'ingredients': recipe.ingredients,
      'steps': recipe.steps
    };

/// Deserializes a Recipe from a Map<String, dynamic>.
/// This method is also dying to be code-generated.
Recipe _recipeFromMap(Map<String, dynamic> map) => Recipe(
      title: map['title'],
      ingredients: [...(map['ingredients']).map((e) => _ingredientFromMap(e))],
      steps: [...map['steps']],
    );

Ingredient _ingredientFromMap(Map<String, dynamic> map) => Ingredient(
      a: map['a'],
    );

ArangoDBClient _connectArangoDb() {
  var client = ArangoDBClient(
    scheme: 'http',
    host: 'localhost',
    port: 8529,
    db: 'mydatabase',
    user: 'user',
    pass: 'password',
  );
  return client;
}
1
likes
0
pub points
0%
popularity

Publisher

verified publishersquarealfa.com

Concrete implementation of the nosql_repository package for the ArangoDB database.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

arango_driver, nosql_repository, squarealfa_security, tuple

More

Packages that depend on arangodb_repository