entify 0.3.0

  • README.md
  • CHANGELOG.md
  • Installing
  • Versions
  • 0

entify #

A library to ease the use of the datastore with the googleapis package.

Features #

Entity model mapping:

// ...

@entityModel
class Species {
  // This will handle the mapping between entify's Entity object and this model
  static final EntityBridge<Species> bridge = new EntityBridge<Species>();

  Species();

  // You can use a factory constructor for setting up an object from an entity.
  // This isn't really needed, I just like to create these shorthand constructors,
  // the bridge.fromEntity can be called anywhere.
  factory Species.fromEntity(Entity e) => bridge.fromEntity(e, new Species());

  // Or you can use a vanilla constructor if you prefer.
  Species.entity(Entity e) {
    bridge.fromEntity(e, this);
  }

  // Shorthand function for mapping this to an entify Entity object.
  Entity toEntity() => bridge.toEntity(this);

  @primaryKey
  String scientificName;
  @persistent
  String commonName;
  @persistent
  String status;

  // Fields can be renamed, marked as unindexed (not demonstrated here).
  @Persistent(name: "taxonomy")
  List<String> get taxonomyField => taxonomy.map((e) => e.toString()).toList();

  set taxonomyField(List<String> encodedTaxonomy) { /* ... */ }

  // This field is converted to/from a property via a getter/setter respectively.
  List<Taxon> taxonomy = [];

  // This is a lookup field generated from taxonomy, it doesn't need a setter.
  @persistent
  List<String> get taxonomyPaths { /* ... */ }

  // This is a non-persistent property.
  String get fullTaxonomyPath => taxonomy.join('/');
}

You can save some objects just by calling:

Future<Null> insertOrUpdateSpecies(DatastoreShell dsh, Iterable<Species> species) async {
  await (dsh.beginMutation()
      ..upsertAll(species.map((s) => s.toEntity())))
    .commit();
}

All the elements are optional, you can create googleapis level API objects and modify them if something is not supported.

Getting Started #

Check out the https://github.com/skawa-universe/endangered_species/ project for an example and details on the class provided above.

0.3.0 #

  • Entity kind is checked on deserialization (but can be disabled)
  • IndexedOverride is checked and stripped in Entity (though not for iterable value items, that is taken care of during API value object conversion)
  • Improved error handling
  • Introduced value deep copy to Entity.setPropertiesFrom, which will duplicate iterables (as lists), the default behavior is to shallow copy values
  • Added an Entity.copy constructor, which will by default create a deep copy of an entity, but this can be overridden
  • The EntityBridge uses metadata from both the getter and setter (previously only the getter was taken into account)

0.2.4 #

  • Added an option to the EntityBridge metadata classes skip setting properties that are missing in the entity.
  • Introduced version in Entity that saves the version in the fetch and query results.
  • EntityBridge can set version fields if they are available.
  • MutationBatch can return the affected keys with relatedKeys.
  • All get functions now handle deferred reads automatically.
  • Introduced the IndexOverride wrapper which can override whether an entity model field value has to be indexed or not.

0.2.3 #

  • Added containsProperty to Entity
  • The remove method on Entity returns the previously set value.
  • The read consistency can be specified with get calls
  • The default read consistency has been changed to null which means the service side default, which is different what it used to be with get calls and ancestor queries.

0.2.2 #

  • Entity: fixed propertyNames added toString
  • WrappedServerError will tell about the wrapped error in toString
  • Added a null check for the kind in the Key constructor
  • Incomplete Key values in entities are checked (they can still fail mutations if they are in a list)
  • Added EntityBridge methods that can be used as predicates: entityKindMatches and keyKindMatches

0.2.1+1 #

  • Fixed blob value handling

0.2.1 #

  • Added indexedIfNonNull.
  • Entity now supports accessing property names, so properties are now enumerable.
  • Empty commits are handled.
  • The setPropertiesFrom in the Entity class allows future proof entity updates.

0.2.0 #

  • Added support for transactions.
  • Renamed MutationBatch.execute and executeRaw to commit. The execute methods are deprecated now and will be removed in a future release.

0.1.2+2 #

  • Setters are optional for properties in entity model classes

0.1.2+1 #

  • Handles null values in fromValue better
  • Throws error if the entity model class does not have a key

0.1.2 #

  • Renamed fromProtocol to fromApiObject in Key and Entity to follow common naming convention
  • fromValue now handles empty values (treats them as null)
  • Entity throws more meaningful errors in fromApiObject

0.1.1+3 #

  • Added createKey method to EntityBridge
  • Created QueryResult interface

0.1.1 #

  • The bool parameter of toValue became a named parameter as it is recommended.

Use this package as a library

1. Depend on it

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


dependencies:
  entify: ^0.3.0

2. Install it

You can install packages from the command line:

with pub:


$ pub get

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

3. Import it

Now in your Dart code, you can use:


import 'package:entify/entify.dart';
  
Version Uploaded Documentation Archive
0.3.0 Jul 6, 2018 Go to the documentation of entify 0.3.0 Download entify 0.3.0 archive
0.2.3 Feb 16, 2018 Go to the documentation of entify 0.2.3 Download entify 0.2.3 archive
0.2.2 Nov 23, 2017 Go to the documentation of entify 0.2.2 Download entify 0.2.2 archive
0.2.1+1 Oct 4, 2017 Go to the documentation of entify 0.2.1+1 Download entify 0.2.1+1 archive
0.2.1 Aug 22, 2017 Go to the documentation of entify 0.2.1 Download entify 0.2.1 archive
0.1.2+2 Jul 27, 2017 Go to the documentation of entify 0.1.2+2 Download entify 0.1.2+2 archive
0.1.2+1 Jul 7, 2017 Go to the documentation of entify 0.1.2+1 Download entify 0.1.2+1 archive
0.1.1+2 Jun 6, 2017 Go to the documentation of entify 0.1.1+2 Download entify 0.1.1+2 archive
0.1.1+1 Jun 6, 2017 Go to the documentation of entify 0.1.1+1 Download entify 0.1.1+1 archive
0.1.1 Jun 6, 2017 Go to the documentation of entify 0.1.1 Download entify 0.1.1 archive

All 11 versions...

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

The package version is not analyzed, because it does not support Dart 2. Until this is resolved, the package will receive a health and maintenance score of 0.

Analysis issues and suggestions

Support Dart 2 in pubspec.yaml.

The SDK constraint in pubspec.yaml doesn't allow the Dart 2.0.0 release. For information about upgrading it to be Dart 2 compatible, please see https://www.dartlang.org/dart-2#migration.

Maintenance issues and suggestions

Make sure dartdoc successfully runs on your package's source files. (-10 points)

Dependencies were not resolved.