UNPKG

@athenna/database

Version:

The Athenna database handler for SQL/NoSQL.

60 lines (59 loc) 2.3 kB
/** * @athenna/database * * (c) João Lenon <lenon@athenna.io> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ import { COLUMNS_KEY, HAS_ONE_KEY, HAS_MANY_KEY, BELONGS_TO_KEY, BELONGS_TO_MANY_KEY } from '#src/constants/MetadataKeys'; export class Annotation { static getColumnsMeta(target) { return Reflect.getMetadata(COLUMNS_KEY, target) || []; } static defineColumnMeta(target, options) { const columns = Reflect.getMetadata(COLUMNS_KEY, target) || []; columns.push(options); Reflect.defineMetadata(COLUMNS_KEY, columns, target); } static getRelationsMeta(target) { return [ ...this.getHasOnesMeta(target), ...this.getHasManyMeta(target), ...this.getBelongsToMeta(target), ...this.getBelongsToManyMeta(target) ]; } static getHasOnesMeta(target) { return Reflect.getMetadata(HAS_ONE_KEY, target) || []; } static defineHasOneMeta(target, options) { const hasOne = Reflect.getMetadata(HAS_ONE_KEY, target) || []; hasOne.push(options); Reflect.defineMetadata(HAS_ONE_KEY, hasOne, target); } static getHasManyMeta(target) { return Reflect.getMetadata(HAS_MANY_KEY, target) || []; } static defineHasManyMeta(target, options) { const hasMany = Reflect.getMetadata(HAS_MANY_KEY, target) || []; hasMany.push(options); Reflect.defineMetadata(HAS_MANY_KEY, hasMany, target); } static getBelongsToMeta(target) { return Reflect.getMetadata(BELONGS_TO_KEY, target) || []; } static defineBelongsToMeta(target, options) { const belongsTo = Reflect.getMetadata(BELONGS_TO_KEY, target) || []; belongsTo.push(options); Reflect.defineMetadata(BELONGS_TO_KEY, belongsTo, target); } static getBelongsToManyMeta(target) { return Reflect.getMetadata(BELONGS_TO_MANY_KEY, target) || []; } static defineBelongsToManyMeta(target, options) { const belongsToMany = Reflect.getMetadata(BELONGS_TO_MANY_KEY, target) || []; belongsToMany.push(options); Reflect.defineMetadata(BELONGS_TO_MANY_KEY, belongsToMany, target); } }