dataorm
Version:
A Javascript ORM
58 lines (39 loc) • 1.18 kB
text/typescript
import { Database } from '../database';
import { Subject } from '../observer/Subject';
class Model extends Subject {
public static get() {
return Subject;
}
public static find(id: any) {
const instance: any = new this();
const db1 = Database.getInstance();
const collection: any[] = db1.collection(instance['entity']);
const result = collection.find((item: any) => item.id === id);
return result ?? null;
}
public static create(entity: any) {
const instance: any = new this();
const db1 = Database.getInstance();
const collection: any[] = db1.collection(instance['entity']);
if (
entity.hasOwnProperty('id') &&
collection.find(item => item.id === entity['id'])
) {
throw new Error('Duplicate id');
}
entity['id'] = entity.hasOwnProperty('id')
? entity['id']
: collection.length + 1;
collection.push(entity);
db1.setCollection(instance['entity'], collection);
this.fire(collection);
return entity ?? null;
}
public hasMany(relation: any) {
return relation;
}
public belongsTo(relation: any) {
return relation;
}
}
export { Model };