kemsky / as3Query

Another SQLite ORM and query DSL for ActionScript

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

As3Query

Another SQLite ORM and query DSL for Flex and Adobe Air

Uses Promises/A+ library.

Annotations list:

  • Specify table name [Table(name="test")]
  • Specify table index (or multiple indices) [Index(name="test_index_1", columns="unsigned,bool", unique="true")]
  • Specify table column [Column(primaryKey, nullable="false", unique="true", foreignKey="table(id)", options="deferred", default="1")]

Usage:

  1. Put annotations:

        [Table(name="test")]
        [Index(name="test_index_1", columns="unsigned,bool")]
        [Index(name="test_index_2", columns="str", unique="true")]
        public dynamic class TestEntity
        {
            [Column(primaryKey, nullable="false")]
            public var id:int;
    
            [Column(default="1")]
            public var unsigned:uint;
    
            [Column(unique="true")]
            public var date:Date;
    
            [Column]
            public var xml:XML;
    
            [Column]
            public var xmlList:XMLList;
    
            [Column]
            public var object:Object;
    
            [Column]
            public var bool:Boolean;
    
            [Column]
            public var num:Number;
    
            [Column]
            public var str:String;
    
            [Column(foreignKey="table(id)", options="deferred")]
            public var fk_table:int;
        }
  2. Map entity:

        var entityManager:EntityMapper = new EntityMapper();
        entityManager.registerEntity(TestEntity);
  3. Create tables:

         var connection:SQLConnection = new SQLConnection();
         connection.open(file, SQLMode.CREATE);
         try
         {
            new CreateTables(connection, [TestEntity], mapper).call();
         }
         finally
         {
             if(connection.connected)
             {
                 connection.close();
             }
         }
  4. Create session:

        var session:Session = new Session(mapper);
        session.open(file.nativePath, SQLMode.UPDATE).then(function ():void{ trace('ok') });
  5. Perform different operations:

    Criteria

        session.criteria(TestEntity).by(Order.asc(TestEntity.ATTR_ID)).list.then(function (operation:ISQLOperation):void{ 
            trace(operation.result); 
        });
        session.criteria(TestEntity).when(Restrictions.Eq(TestEntity.ATTR_ID, 1)).unique.then(function (operation:ISQLOperation):void{ 
            trace(operation.result); 
        });
        session.criteria(TestEntity).when(Restrictions.Eq(TestEntity.ATTR_ID, 1)).count.then(function (count:int):void{ 
            trace(count); 
        });

    Create, update

        session.save(testCriteriaEntity1).then(function ():void{ trace('ok') });

    Delete

        session.remove(testCriteriaEntity1).then(function ():void{ trace('ok') });

    Transactions

        var transaction:ITransaction = session.transaction;
    
        transaction.insert(testCriteriaEntity1);
        transaction.insert(testCriteriaEntity2);
        transaction.remove(testCriteriaEntity2);
        
        transaction.run.then(function (operation:ISQLOperation):void{ 
            trace('ok'); 
        });

    Raw queries

       var query:IQuery = session.query;
       query.text = "update test set str=:str where str=:id";
       query.parameters[":id"] = "inserted2";
       query.parameters[":str"] = "inserted3";
       query.run.then(function (operation:ISQLOperation):void{ 
            trace('ok'); 
       });

You can add metadata validation to Intellij Idea using KnownMetaData.dtd file. Open Preferences > Schemas and DTDs > Add KnownMetaData.dtd with URI urn:Flex:Meta

About

Another SQLite ORM and query DSL for ActionScript

License:MIT License


Languages

Language:ActionScript 100.0%