mirror of
https://github.com/BluemediaGER/muse.git
synced 2024-11-12 21:05:29 +01:00
Add FileCache model
This commit is contained in:
parent
d805da906a
commit
04c7e61fc0
|
@ -28,7 +28,7 @@ import Shuffle from './commands/shuffle.js';
|
|||
import Skip from './commands/skip.js';
|
||||
import Unskip from './commands/unskip.js';
|
||||
import ThirdParty from './services/third-party.js';
|
||||
import CacheProvider from './services/cache.js';
|
||||
import KeyValueCacheProvider from './services/key-value-cache.js';
|
||||
|
||||
const container = new Container();
|
||||
|
||||
|
@ -76,6 +76,6 @@ container.bind(TYPES.Config).toConstantValue(new ConfigProvider());
|
|||
// Static libraries
|
||||
container.bind(TYPES.ThirdParty).to(ThirdParty);
|
||||
|
||||
container.bind(TYPES.Cache).to(CacheProvider);
|
||||
container.bind(TYPES.KeyValueCache).to(KeyValueCacheProvider);
|
||||
|
||||
export default container;
|
||||
|
|
14
src/models/file-cache.ts
Normal file
14
src/models/file-cache.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
import {Table, Column, PrimaryKey, Model} from 'sequelize-typescript';
|
||||
|
||||
@Table
|
||||
export default class FileCache extends Model<FileCache> {
|
||||
@PrimaryKey
|
||||
@Column
|
||||
hash!: string;
|
||||
|
||||
@Column
|
||||
kbits!: number;
|
||||
|
||||
@Column
|
||||
accessedAt!: Date;
|
||||
}
|
|
@ -1,8 +1,10 @@
|
|||
import FileCache from './file-cache.js';
|
||||
import KeyValueCache from './key-value-cache.js';
|
||||
import Settings from './settings.js';
|
||||
import Shortcut from './shortcut.js';
|
||||
|
||||
export {
|
||||
FileCache,
|
||||
KeyValueCache,
|
||||
Settings,
|
||||
Shortcut,
|
||||
|
|
|
@ -14,7 +14,7 @@ import {TYPES} from '../types.js';
|
|||
import {cleanUrl} from '../utils/url.js';
|
||||
import ThirdParty from './third-party.js';
|
||||
import Config from './config.js';
|
||||
import CacheProvider from './cache.js';
|
||||
import KeyValueCacheProvider from './key-value-cache.js';
|
||||
|
||||
type QueuedSongWithoutChannel = Except<QueuedSong, 'addedInChannelId'>;
|
||||
|
||||
|
@ -26,14 +26,14 @@ export default class {
|
|||
private readonly youtube: YouTube;
|
||||
private readonly youtubeKey: string;
|
||||
private readonly spotify: Spotify;
|
||||
private readonly cache: CacheProvider;
|
||||
private readonly cache: KeyValueCacheProvider;
|
||||
|
||||
private readonly ytsrQueue: PQueue;
|
||||
|
||||
constructor(
|
||||
@inject(TYPES.ThirdParty) thirdParty: ThirdParty,
|
||||
@inject(TYPES.Config) config: Config,
|
||||
@inject(TYPES.Cache) cache: CacheProvider) {
|
||||
@inject(TYPES.KeyValueCache) cache: KeyValueCacheProvider) {
|
||||
this.youtube = thirdParty.youtube;
|
||||
this.youtubeKey = config.YOUTUBE_API_KEY;
|
||||
this.spotify = thirdParty.spotify;
|
||||
|
|
|
@ -12,7 +12,7 @@ type Options = {
|
|||
const futureTimeToDate = (time: Seconds) => new Date(new Date().getTime() + (time * 1000));
|
||||
|
||||
@injectable()
|
||||
export default class CacheProvider {
|
||||
export default class KeyValueCacheProvider {
|
||||
async wrap<T extends [...any[], Options], F>(func: (...options: any) => Promise<F>, ...options: T): Promise<F> {
|
||||
if (options.length === 0) {
|
||||
throw new Error('Missing cache options');
|
|
@ -1,6 +1,7 @@
|
|||
export const TYPES = {
|
||||
Bot: Symbol('Bot'),
|
||||
Cache: Symbol('Cache'),
|
||||
KeyValueCache: Symbol('KeyValueCache'),
|
||||
FileCache: Symbol('FileCache'),
|
||||
Client: Symbol('Client'),
|
||||
Config: Symbol('Config'),
|
||||
Command: Symbol('Command'),
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import {Sequelize} from 'sequelize-typescript';
|
||||
import path from 'path';
|
||||
import {DATA_DIR} from '../services/config.js';
|
||||
import {KeyValueCache, Settings, Shortcut} from '../models/index.js';
|
||||
import {FileCache, KeyValueCache, Settings, Shortcut} from '../models/index.js';
|
||||
|
||||
export const sequelize = new Sequelize({
|
||||
dialect: 'sqlite',
|
||||
database: 'muse',
|
||||
storage: path.join(DATA_DIR, 'db.sqlite'),
|
||||
models: [KeyValueCache, Settings, Shortcut],
|
||||
models: [FileCache, KeyValueCache, Settings, Shortcut],
|
||||
logging: false,
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue