jaguar_mongo_data_store 2.2.0

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • 43

jaguar_mongo_data_store

Data store implementation for MongoDb

Examples

Data store

main() async {
  // Create and open a connection to mongo
  final db = new mgo.Db(kMongoUrl);
  await db.open();

  // Create a mongo store
  MongoDataStore<Post> store =
      new MongoDataStore<Post>(mongoSerializer, "posts", db);

  // Start fresh by deleting all previous documents
  await store.removeAll();

  // Insert a post and receive the ID of the inserted document
  final String post1Id =
      await store.insert(new Post.buildNoId("title1", "message1", 5));
  print(post1Id);

  // Insert another post and receive the ID of the inserted document
  final String post2Id =
      await store.insert(new Post.buildNoId("title2", "message2", 10));
  print(post2Id);

  // Get all posts in collection
  final List<Post> posts = await (await store.getAll()).toList();
  print(posts);

  // Get a post by ID
  final post1 = await store.getById(post1Id);
  print(post1);

  // Get another post by ID
  final post2 = await store.getById(post2Id);
  print(post2);

  // Update a post
  post1.likes = 25;
  await store.updateById(post1Id, post1);

  // Get a changed a post
  final post1Changed = await store.getById(post1Id);
  print(post1Changed);

  // Update a post
  await store.updateMapById(post1Id, {'likes': 55});

  // Get a changed a post
  final post1Changed2 = await store.getById(post1Id);
  print(post1Changed2);

  // Delete a post
  await store.removeById(post2Id);

  //Posts after delete
  final List<Post> postsAfterDelete = await (await store.getAll()).toList();
  print(postsAfterDelete);

  exit(0);
}

Resource

import 'dart:io';
import 'dart:async';
import 'package:jaguar_mongo_data_store/resource.dart';
import '../common/post/post.dart';
import 'package:jaguar/jaguar.dart' hide Post;
import 'package:jaguar_reflect/jaguar_reflect.dart';
import 'package:jaguar_data_store/client.dart';
import 'package:http/http.dart' as http;

final String kMongoUrl = "mongodb://localhost:27017/example";

@Api(path: '/api')
class ExampleApi {
  @IncludeApi(path: '/post')
  final MongoResource s =
      new MongoResource(kMongoUrl, 'posts', serializer, mongoSerializer);
}

Future<Null> server() async {
  final server = new Jaguar();
  server.addApi(reflect(new ExampleApi()));
  await server.serve();
}

const String kAuthority = 'http://localhost:8080';

Future<Null> client() async {
  final client = new http.Client();
  final ResourceClient<String, Post> rC = new ResourceClient<String, Post>(
      client, serializer,
      authority: kAuthority, path: '/api/post');

  // Start fresh by deleting all previous documents
  print(await rC.removeAll());

  // Insert a post and receive the ID of the inserted document
  final String post1Id =
      await rC.insert(new Post.buildNoId("title1", "message1", 5));
  print(post1Id);

  // Insert another post and receive the ID of the inserted document
  final String post2Id =
      await rC.insert(new Post.buildNoId("title2", "message2", 10));
  print(post2Id);

  // Get all posts in collection
  final List<Post> posts = await rC.getAll();
  print(posts);

  // Get a post by ID
  final post1 = await rC.getById(post1Id);
  print(post1);

  // Get another post by ID
  final post2 = await rC.getById(post2Id);
  print(post2);

  // Update a post
  post1.likes = 25;
  await rC.update(post1);

  // Get a changed a post
  final post1Changed = await rC.getById(post1Id);
  print(post1Changed);

  // Update a post
  await rC.update(post1);

  // Get a changed a post
  final post1Changed2 = await rC.getById(post1Id);
  print(post1Changed2);

  // Delete a post
  await rC.removeById(post2Id);

  //Posts after delete
  final List<Post> postsAfterDelete = await rC.getAll();
  print(postsAfterDelete);
}

main() async {
  await server();
  await client();
  exit(0);
}

Changelog

2.1.1

  • Jaguar 2.1.x

example/example.dart

library example.data_store.simple;

import 'dart:io';
import 'dart:async';
import 'package:jaguar_mongo_data_store/resource.dart';
import 'common/model.dart';
import 'package:jaguar/jaguar.dart' hide Post;
import 'package:jaguar_reflect/jaguar_reflect.dart';
import 'package:jaguar_data_store/client.dart';
import 'package:http/http.dart' as http;
import 'package:jaguar_mongo/jaguar_mongo.dart';

final pool = MongoPool("mongodb://localhost:27018/example");

@Controller(path: '/api')
class ExampleApi {
  @IncludeHandler(path: '/post')
  final MongoResource s =
      new MongoResource('posts', serializer, mongoSerializer, pool: pool);
}

Future<void> server() async {
  final server = Jaguar(port: 10000);

  server.add(reflect(ExampleApi()));

  server.log.onRecord.listen(print);
  await server.serve(logRequests: true);
}

const String kAuthority = 'http://localhost:10000';

Future<void> client() async {
  final client = new http.Client();
  final ResourceClient<String, Post> rC = new ResourceClient<String, Post>(
      client, serializer,
      authority: kAuthority, path: '/api/post');

  // Start fresh by deleting all previous documents
  print(await rC.removeAll());

  // Insert a post and receive the ID of the inserted document
  final String post1Id =
      await rC.insert(new Post.buildNoId("title1", "message1", 5));
  print(post1Id);

  // Insert another post and receive the ID of the inserted document
  final String post2Id =
      await rC.insert(new Post.buildNoId("title2", "message2", 10));
  print(post2Id);

  // Get all posts in collection
  final List<Post> posts = await rC.getAll();
  print(posts);

  // Get a post by ID
  final post1 = await rC.getById(post1Id);
  print(post1);

  // Get another post by ID
  final post2 = await rC.getById(post2Id);
  print(post2);

  // Update a post
  post1.likes = 25;
  await rC.update(post1);

  // Get a changed a post
  final post1Changed = await rC.getById(post1Id);
  print(post1Changed);

  // Update a post
  await rC.update(post1);

  // Get a changed a post
  final post1Changed2 = await rC.getById(post1Id);
  print(post1Changed2);

  // Delete a post
  await rC.removeById(post2Id);

  //Posts after delete
  final List<Post> postsAfterDelete = await rC.getAll();
  print(postsAfterDelete);
}

main() async {
  await server();
  await client();
  exit(0);
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  jaguar_mongo_data_store: ^2.2.0

2. Install it

You can install packages from the command line:

with pub:


$ pub get

with Flutter:


$ flutter packages get

Alternatively, your editor might support pub get or flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:jaguar_mongo_data_store/jaguar_mongo_data_store.dart';
  
Version Uploaded Documentation Archive
2.2.0 Aug 15, 2018 Go to the documentation of jaguar_mongo_data_store 2.2.0 Download jaguar_mongo_data_store 2.2.0 archive
2.1.1 Jul 11, 2018 Go to the documentation of jaguar_mongo_data_store 2.1.1 Download jaguar_mongo_data_store 2.1.1 archive
1.3.2 Feb 2, 2018 Go to the documentation of jaguar_mongo_data_store 1.3.2 Download jaguar_mongo_data_store 1.3.2 archive
1.3.1 Feb 2, 2018 Go to the documentation of jaguar_mongo_data_store 1.3.1 Download jaguar_mongo_data_store 1.3.1 archive
1.2.7 Jan 13, 2018 Go to the documentation of jaguar_mongo_data_store 1.2.7 Download jaguar_mongo_data_store 1.2.7 archive
1.2.6 Jan 13, 2018 Go to the documentation of jaguar_mongo_data_store 1.2.6 Download jaguar_mongo_data_store 1.2.6 archive
1.1.5 Jan 11, 2018 Go to the documentation of jaguar_mongo_data_store 1.1.5 Download jaguar_mongo_data_store 1.1.5 archive
0.2.4 Jul 12, 2017 Go to the documentation of jaguar_mongo_data_store 0.2.4 Download jaguar_mongo_data_store 0.2.4 archive
0.2.3 Jul 9, 2017 Go to the documentation of jaguar_mongo_data_store 0.2.3 Download jaguar_mongo_data_store 0.2.3 archive
0.2.2 Jun 17, 2017 Go to the documentation of jaguar_mongo_data_store 0.2.2 Download jaguar_mongo_data_store 0.2.2 archive

All 18 versions...

Popularity:
Describes how popular the package is relative to other packages. [more]
9
Health:
Code health derived from static analysis. [more]
75
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
80
Overall:
Weighted score of the above. [more]
43
Learn more about scoring.

We analyzed this package on Dec 5, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.1.0
  • pana: 0.12.7

Platforms

Detected platforms: Flutter, other

Primary library: package:jaguar_mongo_data_store/jaguar_mongo_data_store.dart with components: io.

Health issues and suggestions

Fix lib/src/resource.dart. (-25 points)

Analysis of lib/src/resource.dart failed with 1 error:

line 31 col 25: The method 'injectInterceptor' isn't defined for the class 'MongoPool'.

Maintenance suggestions

The description is too short. (-20 points)

Add more detail about the package, what it does and what is its target use case. Try to write at least 60 characters.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0 <3.0.0
jaguar ^2.2.4 2.4.12
jaguar_data_store ^2.2.0 2.2.0
jaguar_mongo ^2.2.0 2.4.1
jaguar_serializer ^2.2.0 2.2.5
mongo_dart ^0.3.3 0.3.3
Transitive dependencies
async 2.0.8
auth_header 2.1.2
bson 0.3.2
charcode 1.1.2
client_cookie 2.1.5 2.1.6
collection 1.14.11
conn_pool 2.1.8
convert 2.0.2
crypto 2.0.6
fixnum 0.10.9
http_parser 3.1.3
http_server 0.9.8+1
jaguar_client 2.4.2
jaguar_common 2.1.4
jaguar_resty 2.8.9 2.8.18
logging 0.11.3+2
meta 1.1.6
mime 0.9.6+2
mongo_dart_query 0.3.2
more 1.12.1
path 1.6.2
path_tree 2.2.2
pool 1.3.6
source_span 1.4.1
stack_trace 1.9.3
string_scanner 1.0.4
typed_data 1.1.6
uuid 1.0.3
Dev dependencies
build_runner ^0.9.0
http ^0.11.3 0.11.3+17 0.12.0
jaguar_reflect ^2.2.0
jaguar_serializer_cli ^2.2.0
jaguar_serializer_mongo ^2.1.1
test ^1.2.0