dui-active-record
ActiveRecord pattern implementation
Works on Node.js and on browsers
Functional style initialization
interface IFoo {
bar: number;
}
Validation
let FooValidator = new ModelValidator(
[
{
field : 'bar',
validators: ['int'],
},
],
);
let foo = {
bar: 123,
};
FooValidator.validate(foo) : boolean;
FooValidator.errors(foo) : Error[];
let foos: IFoo[] = [
{
bar: 5,
}, {
bar: 10,
}
]
foos.map(FooValidator.validate);
foos.map(FooValidator.errors);
Storage
let FooStorage = new ArrayStorage<IFoo>();
or
let FooStorage = MongoDB.storage<IFoo>('collection_name');
let foo = {
bar: 123,
};
FooStorage.save(foo);
FooStorage.save('someId', foo);
let foos: IFoo[] = [
{
bar: 5,
}, {
bar: 10,
}
]
foos.map(FooStorage.save);
Class style initialization
@ActiveRecord({
storage: ArrayStorage
})
export class FooModel extends Model {
constructor(a?: string) {
super();
}
@Field({enumerable: false})
public a: string;
@Field()
public b: number = 0;
@Field()
public d: SubDoc;
@Field({enumerable: true})
get c(): string {
return 'c';
}
set c(value: string) {
console.log('set c value:', value);
}
rules() {
return [];
}
static stat() {
console.log('stat');
}
}