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.
35 lines
1007 B
35 lines
1007 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()
|
|
}
|
|
}
|