You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lib/src/orm/support/CacheModel.ts

35 lines
1002 B

import {Model} from '../model/Model'
import {Field} from '../model/Field'
import {FieldType} from '../types'
import {Maybe} from '../../util'
import {ModelBuilder} from '../model/ModelBuilder'
/**
* A model instance which stores records from the ORMCache driver.
*/
export class CacheModel extends Model<CacheModel> {
protected static table = 'caches' // FIXME allow configuring
protected static key = 'cache_key'
@Field(FieldType.varchar, 'cache_key')
public cacheKey!: string
@Field(FieldType.text, 'cache_value')
public cacheValue!: string
@Field(FieldType.timestamp, 'cache_expires')
public cacheExpires?: Date
public static withCacheKey(key: string): ModelBuilder<CacheModel> {
return this.query<CacheModel>()
.whereKey(key)
.whereProperty('cacheExpires', '>', new Date())
}
public static getCacheKey(key: string): Promise<Maybe<CacheModel>> {
return this.withCacheKey(key)
.first()
}
}