dataless

    0.0.3 • Public • Published

    dataless

    A javascript ORM with multiple adapters that aims to provide data access in browsers.


    Features

    • Support multiple databases adapter
      • REST adapter
      • Local In-Memory adapter (WIP)
    • Entity abstraction layer with basic query operations
    • Support model definition
      • Basic definition
        • Define table
        • Primary Key
        • Date fields
        • Field to type casting
      • Basic Create / Read / Update / Delete operations
      • Model event hooks
      • Getter and Setter mutators
      • Define model relationships
        • BelongsTo
        • HasMany
        • HasOne
        • BelongsToMany
      • Perform advanced query on a relationship on a model
      • Eager load relationships
      • Call remote functions defined on remote entity (rest endpoint or db functions)
    • DOCS D:

    Code example

    // first import needed classes
    import {DatabaseManager, Model} from 'dataless'
     
    // configure your connection
    DatabaseManager.addConnection('default', {
        driver: 'url',
        database: 'http://localhost:100/api/v1/'
    });
    DatabaseManager.addConnection('memory', {
        driver: 'memory'
    });
     
    // define your model
    class User extends Model{
        // provide a table
        _table = 'auth/users';
     
        // a mutator
        getFullnameAttribute(){
            return this._attributes['name'] + ' ' + this._attributes['surname'];
        }
    }
     
    // define your model
    class Profile extends Model{
        // provide a table
        _table = 'auth/profiles';
     
        // provide a connection
        _connection = 'default';
     
        // setup a relation
        founder(){
            return this.belongsTo('founder', User);
        }
    }
     
    // Another model in memory store
    class Setting extends Model{
        _table = 'settings';
        _connection = 'memory';
    }
     
    // the app function will be executed once the db is ready
    async function app(){ 
        // search profiles
        var theProfile = await Profile.query().with('founder').select('id', 'name', 'founder_id').find(4);
        var profiles = await Profile.query().with('founder').orderBy('id','DESC').where('logo', '=', null).limit(10).get();
        console.log(theProfile, profiles);
        console.log('Profile #4 is funded by ' + theProfile.get('founder').get('fullname'));
     
        // create a new record with some data
        var profile = new Profile();
        profile.set('name', 'Matt');
        profile.set('surname', 'Smith');
        await profile.save();
        
        // update it
        profile.set('nickname', '"The Doctor"');
        await profile.save();
        
        // access it
        console.log('Hello, my name is ' + profile.get('name') + ' ' + profile.get('surname') + ', also named '+ profile.get('nickname'));
        
        // destroy it
        await profile.destroy();
        
        // create a new record in the memory connection
        var setting = new Setting();
        setting.set('value', true);
        setting.set('name', 'fullscreen');
        await setting.save();
        
        // dump the memory store
        console.log('Memory store dump:', DatabaseManager.connection('memory').toObject());
    }
     
    // connect all the db and let it fly! :D
    Promise.all([DatabaseManager.connect(), DatabaseManager.connect('memory')]).then(app, function(err){ console.log(err); });

    Install

    npm i dataless

    DownloadsWeekly Downloads

    0

    Version

    0.0.3

    License

    MIT

    Last publish

    Collaborators

    • koderslab