postgresql adapter for jaguar_orm
A simple usage example:
import 'dart:async';
import 'package:jaguar_orm_postgresql/jaguar_orm_postgresql.dart';
// The model
class Post {
Post();
Post.make(this.id, this.msg, this.author);
int id;
String msg;
String author;
String toString() => '$id $msg $author';
}
/// The adapter
PgAdapter _adapter =
new PgAdapter('postgres://postgres:dart_jaguar@localhost/postgres');
/// The bean
class PostBean {
/// Field DSL for id column
final IntField id = new IntField('_id');
/// Field DSL for msg column
final StrField msg = new StrField('msg');
/// Field DSL for author column
final StrField author = new StrField('author');
/// Table name for the model this bean manages
String get tableName => 'posts';
/// Inserts a new post into table
Future insert(Post post) async {
InsertStatement inserter = new InsertStatement()..into(tableName);
inserter.set(id.set(post.id));
inserter.set(msg.set(post.msg));
inserter.set(author.set(post.author));
await _adapter.insert(inserter);
}
/// Updates a post
Future update(int id, String author) async {
UpdateStatement updater = new UpdateStatement()..into(tableName);
updater.where(this.id.eq(id));
updater.set(this.author.set(author));
await _adapter.update(updater);
}
/// Finds one post by [id]
Future<Post> findOne(int id) async {
FindStatement updater = new FindStatement()..from(tableName);
updater.where(this.id.eq(id));
Map map = await _adapter.findOne(updater);
Post post = new Post();
post.id = map['_id'];
post.msg = map['msg'];
post.author = map['author'];
return post;
}
/// Finds all posts
Future<List<Post>> findAll() async {
FindStatement finder = new FindStatement()..from(tableName);
List<Map> maps = await (await _adapter.find(finder)).toList();
List<Post> posts = new List<Post>();
for(Map map in maps) {
Post post = new Post();
post.id = map['_id'];
post.msg = map['msg'];
post.author = map['author'];
posts.add(post);
}
return posts;
}
/// Deletes a post by [id]
Future delete(int id) async {
DeleteStatement deleter = new DeleteStatement()..from(tableName);
deleter.where(this.id.eq(id));
await _adapter.delete(deleter);
}
/// Deletes all posts
Future deleteAll() async {
DeleteStatement deleter = new DeleteStatement()..from(tableName);
await _adapter.delete(deleter);
}
}
main() async {
// Connect
await _adapter.connect();
PostBean bean = new PostBean();
// Delete all
await bean.deleteAll();
// Insert some posts
await bean.insert(new Post.make(1, 'Whatever 1', 'mark'));
await bean.insert(new Post.make(2, 'Whatever 2', 'bob'));
// Find one post
Post post = await bean.findOne(1);
print(post);
// Find all posts
List<Post> posts = await bean.findAll();
print(posts);
// Update a post
await bean.update(1, 'rowling');
// Check that the post is updated
post = await bean.findOne(1);
print(post);
// Delete some posts
await bean.delete(1);
await bean.delete(2);
// Find a post when none exists
try {
post = await bean.findOne(1);
print(post);
} on JaguarOrmException catch(e) {
print(e);
}
// Close connection
await _adapter.close();
}
Adapter
interfaceparseValue
to Adapter
Add this to your package's pubspec.yaml file:
dependencies:
jaguar_query_postgres: ^2.2.4
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.
Now in your Dart code, you can use:
import 'package:jaguar_query_postgres/jaguar_query_postgres.dart';
Version | Uploaded | Documentation | Archive |
---|---|---|---|
2.2.6 | Feb 20, 2019 |
|
|
2.2.5 | Sep 25, 2018 |
|
|
2.2.4 | Sep 11, 2018 |
|
|
2.2.2 | Aug 13, 2018 |
|
|
2.1.5 | Jul 17, 2018 |
|
|
2.1.3 | Jul 5, 2018 |
|
|
2.1.2 | Jun 28, 2018 |
|
|
2.1.1 | Jun 27, 2018 |
|
|
Popularity:
Describes how popular the package is relative to other packages.
[more]
|
54
|
Health:
Code health derived from static analysis.
[more]
|
72
|
Maintenance:
Reflects how tidy and up-to-date the package is.
[more]
|
80
|
Overall:
Weighted score of the above.
[more]
|
65
|
We analyzed this package on Feb 14, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
Detected platforms: Flutter, other
Primary library:
package:jaguar_query_postgres/jaguar_query_postgres.dart
with components:io
.
Fix lib/src/adapter.dart
. (-26.12 points)
Analysis of lib/src/adapter.dart
failed with 1 error, 3 hints:
line 12 col 7: Missing concrete implementations of Adapter.upsert and Adapter.upsertMany.
line 24 col 47: Use =
to separate a named parameter from its default value.
line 24 col 71: Use =
to separate a named parameter from its default value.
line 57 col 9: Use isEmpty instead of length
Fix lib/src/compose/compose.dart
. (-1.49 points)
Analysis of lib/src/compose/compose.dart
reported 3 hints:
line 71 col 7: Use isEmpty instead of length
line 90 col 7: Use isNotEmpty instead of length
line 105 col 7: Use isNotEmpty instead of length
Fix lib/src/compose/create.dart
. (-0.50 points)
Analysis of lib/src/compose/create.dart
reported 1 hint:
line 44 col 7: Use isNotEmpty instead of length
Format lib/src/compose/insert.dart
.
Run dartfmt
to format lib/src/compose/insert.dart
.
The package description is too short. (-20 points)
Add more detail to the description
field of pubspec.yaml
. Use 60 to 180 characters to describe the package, what it does, and its target use case.
Maintain an example.
None of the files in the package's example/
directory matches known example patterns.
Common filename patterns include main.dart
, example.dart
, and jaguar_query_postgres.dart
. Packages with multiple examples should provide example/README.md
.
For more information see the pub package layout conventions.
Package | Constraint | Resolved | Available |
---|---|---|---|
Direct dependencies | |||
Dart SDK | >=2.0.0 <3.0.0 | ||
jaguar_query | ^2.2.1 | 2.2.4 | |
path | ^1.6.2 | 1.6.2 | |
postgres | ^1.0.0 | 1.0.2 | |
Transitive dependencies | |||
charcode | 1.1.2 | ||
collection | 1.14.11 | ||
convert | 2.1.1 | ||
crypto | 2.0.6 | ||
meta | 1.1.7 | ||
typed_data | 1.1.6 | ||
Dev dependencies | |||
test | ^1.3.0 |