<commit_before>**An abstraction layer for using Google Appengine Datastore & Memcache with NodeJs**

Appengine is a great plaform for developping applications with (almost) infinite scaling.
The new *Flexible Environment* (previously Managed VM) allow you to run NodeJs and many more langages.

The goal of Nodebjectify is to allow you to store and manipulate data easily, without taking care of such thing as caching.
A short example :

    let hipster = new Hipster({firstName: 'Alfred', lastName: 'Johnson', age: 20, braceColor: '##ffd900'});
    hipster.save().then(function(hipsterSaved){
        console.log('my hipster saved', hipsterSaved);
    });

The hipster is instancied with the data provided (no schema, we keep JS flexibility), then saved to the Datastore and the Cache for later use.

*what Nobjectify doesn't do*

Nobjectify doesn't care about data validation, it is only a layer of abstraction for storing and accessing your data from the Datastore and the Cache.

*TO DO*

* prods credentials configuration for the Datastore
* better management for namespaces (default and on operation-only change)
* implementation of all functionnalities for Nodebjectify.Datastore and Nodebjectify.Cache (eg: batch request)

# Installation

    npm i --save nodebjectify

# Development Environment

You need 2 things to develop your application, a Memcached server and a Datastore.
## Memcached

Go to the [Appengine Doc page](https://cloud.google.com/appengine/docs/flexible/nodejs/caching-application-data) and follow the instructions for your OS at the section *"Testing memcached locally"*

## Datastore
You can use the Appengine Datastore directly, but it will cost you and will not be very efficient for development.
You'd rather use the [Datastore Emulator](https://cloud.google.com/datastore/docs/tools/datastore-emulator).<commit_msg>added todo in the Readme<commit_after>**An abstraction layer for using Google Appengine Datastore & Memcache with NodeJs**

Appengine is a great plaform for developping applications with (almost) infinite scaling.
The new *Flexible Environment* (previously Managed VM) allow you to run NodeJs and many more langages.

The goal of Nodebjectify is to allow you to store and manipulate data easily, without taking care of such thing as caching.
A short example :

    let hipster = new Hipster({firstName: 'Alfred', lastName: 'Johnson', age: 20, braceColor: '##ffd900'});
    hipster.save().then(function(hipsterSaved){
        console.log('my hipster saved', hipsterSaved);
    });

The hipster is instancied with the data provided (no schema, we keep JS flexibility), then saved to the Datastore and the Cache for later use.

*what Nobjectify doesn't do*

Nobjectify doesn't care about data validation, it is only a layer of abstraction for storing and accessing your data from the Datastore and the Cache.

*TO DO*

* prods credentials configuration for the Datastore
* better management for namespaces (default and on operation-only change)
* implementation of all functionnalities for Nodebjectify.Datastore and Nodebjectify.Cache (eg: batch request)
* documentation of all basics methods accessible with `Model`

# Installation

    npm i --save nodebjectify

# Development Environment

You need 2 things to develop your application, a Memcached server and a Datastore.
## Memcached

Go to the [Appengine Doc page](https://cloud.google.com/appengine/docs/flexible/nodejs/caching-application-data) and follow the instructions for your OS at the section *"Testing memcached locally"*

## Datastore
You can use the Appengine Datastore directly, but it will cost you and will not be very efficient for development.
You'd rather use the [Datastore Emulator](https://cloud.google.com/datastore/docs/tools/datastore-emulator).
{'fraction_non_alphanumeric': 0.06974277380005303, 'fraction_numerical': 0.0031821797931583136, 'mean_word_length': 4.8753894080996885, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3764642', 'n_tokens_mistral': 1051, 'n_tokens_neox': 997, 'n_words': 471}