1 module deepmagic.orm.models.prototype.model; 2 3 import deepmagic.orm; 4 5 class PrototypeModel(DBConfigTemplate, RecordTemplate, PuppetTemplate, PuppetsTemplate){ 6 DBConfigTemplate database; 7 8 this(DBConfigTemplate database){ 9 this.database = database; 10 } 11 12 RecordTemplate[] find(ORM_Query query){ 13 query.record_name = __traits(identifier, RecordTemplate); 14 Query result = this.database.session.createQuery(query.toString()); 15 return result.list!(RecordTemplate)(); 16 } 17 18 void populate(PuppetsTemplate _puppets){ 19 if(_puppets != null){ 20 foreach(int i, PuppetTemplate puppet; _puppets){ 21 RecordTemplate record = new RecordTemplate(this.database, puppet); 22 record.save(); 23 } 24 } 25 } 26 27 //take 28 RecordTemplate first(ORM_Query query){ 29 return this.find(query)[0]; 30 } 31 RecordTemplate last(ORM_Query query){ 32 return this.find(query)[$-1]; 33 } 34 //find_by 35 //find_each 36 //find_in_batches 37 //where 38 //not 39 //order 40 //select 41 //limit 42 //group 43 //count 44 //having 45 //reorder 46 //reverse_order 47 /+ 48 RecordTemplate[] reverse_order(ORM_Query query){ 49 import std.algorithm; 50 return reverse(this.find(query)); 51 } 52 +/ 53 //none 54 //create 55 //find_or_create_by 56 //find_by_sql 57 //select_all 58 //pluck 59 //ids 60 //exists 61 //includes 62 //average 63 //minimum 64 //maximum 65 //sum 66 //explain 67 /+ 68 //callbacks 69 3.1 Creating an Object 70 before_validation 71 after_validation 72 before_save 73 around_save 74 before_create 75 around_create 76 after_create 77 after_save 78 after_commit/after_rollback 79 80 3.2 Updating an Object 81 before_validation 82 after_validation 83 before_save 84 around_save 85 before_update 86 around_update 87 after_update 88 after_save 89 after_commit/after_rollback 90 91 3.3 Destroying an Object 92 before_destroy 93 around_destroy 94 after_destroy 95 after_commit/after_rollback 96 +/ 97 }