quaerateum
Version:
Simple typescript ORM for node.js based on data-mapper, unit-of-work and identity-map patterns. Supports MongoDB, MySQL, PostgreSQL and SQLite databases as well as usage with vanilla JS.
91 lines (66 loc) • 1.76 kB
text/typescript
import {
AfterCreate, AfterDelete, AfterUpdate, BeforeCreate, BeforeDelete, BeforeUpdate,
Collection, Entity, OneToMany, Property, ManyToOne, QueryOrder,
} from '../../lib';
import { Book2 } from './Book2';
import { BaseEntity2 } from './BaseEntity2';
()
export class Author2 extends BaseEntity2 {
static beforeDestroyCalled = 0;
static afterDestroyCalled = 0;
({ length: 3, default: 'CURRENT_TIMESTAMP(3)' })
createdAt = new Date();
({ onUpdate: () => new Date(), length: 3, default: 'CURRENT_TIMESTAMP(3)' })
updatedAt = new Date();
()
name: string;
({ unique: true })
email: string;
({ nullable: true })
age: number;
({ default: 0 })
termsAccepted = false;
({ nullable: true })
identities: string[];
({ nullable: true })
born: Date;
({ entity: () => Book2, mappedBy: 'author', orderBy: { createdAt: QueryOrder.ASC } })
books: Collection<Book2>;
()
favouriteBook: Book2;
()
favouriteAuthor: Author2;
({ persist: false })
version: number;
({ persist: false })
versionAsString: string;
constructor(name: string, email: string) {
super();
this.name = name;
this.email = email;
}
()
beforeCreate() {
this.version = 1;
}
()
afterCreate() {
this.versionAsString = 'v' + this.version;
}
()
beforeUpdate() {
this.version += 1;
}
()
afterUpdate() {
this.versionAsString = 'v' + this.version;
}
()
beforeDelete() {
Author2.beforeDestroyCalled += 1;
}
()
afterDelete() {
Author2.afterDestroyCalled += 1;
}
}