145 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			145 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/**
 | 
						|
 * Do not use
 | 
						|
 */
 | 
						|
 | 
						|
// type Sqlite3Statement = any;
 | 
						|
// type Sqlite3Database = any;
 | 
						|
//
 | 
						|
// import { Character as ComplexCharacter } from '../../site/character_page/interfaces';
 | 
						|
//
 | 
						|
// import * as SQL from './sql';
 | 
						|
// import { ProfileRecord, SqlStore } from './sql-store';
 | 
						|
//
 | 
						|
// export class Sqlite3Store extends SqlStore {
 | 
						|
//     protected static Sqlite: any;
 | 
						|
//
 | 
						|
//     protected stmtGetProfile: Promise<Sqlite3Statement>;
 | 
						|
//     protected stmtStoreProfile: Promise<Sqlite3Statement>;
 | 
						|
//     protected stmtUpdateCounts: Promise<Sqlite3Statement>;
 | 
						|
//
 | 
						|
//     protected db: Promise<Sqlite3Database>;
 | 
						|
//
 | 
						|
//     constructor(dbName: string = 'fchat-ascending.sqlite') {
 | 
						|
//         super(dbName);
 | 
						|
//
 | 
						|
//         if (!Sqlite3Store.Sqlite) {
 | 
						|
//             throw new Error('Sqlite3Store.setSqlite() must be called before instantiation');
 | 
						|
//         }
 | 
						|
//
 | 
						|
//         this.db = this.prepareDatabase(this.dbFile);
 | 
						|
//
 | 
						|
//         this.stmtGetProfile = this.prepareStatement(SQL.ProfileGet);
 | 
						|
//         this.stmtStoreProfile = this.prepareStatement(SQL.ProfileInsert);
 | 
						|
//         this.stmtUpdateCounts = this.prepareStatement(SQL.ProfileUpdateCount);
 | 
						|
//     }
 | 
						|
//
 | 
						|
//     static setSqlite(Sqlite: any) {
 | 
						|
//         Sqlite3Store.Sqlite = Sqlite;
 | 
						|
//     }
 | 
						|
//
 | 
						|
//     prepareDatabase(fileName: string): Promise<Sqlite3Database> {
 | 
						|
//         return new Promise(
 | 
						|
//             (resolve, reject) => {
 | 
						|
//                 // Sqlite3Store.Sqlite.verbose();
 | 
						|
//                 const db = new Sqlite3Store.Sqlite.Database(
 | 
						|
//                     fileName,
 | 
						|
//                     (err: any) => {
 | 
						|
//                         if (err) {
 | 
						|
//                             reject(err);
 | 
						|
//                             return;
 | 
						|
//                         }
 | 
						|
//
 | 
						|
//                         resolve(db);
 | 
						|
//                     }
 | 
						|
//                 );
 | 
						|
//             }
 | 
						|
//         );
 | 
						|
//     }
 | 
						|
//
 | 
						|
//     prepareStatement(sql: string): Promise<Sqlite3Statement> {
 | 
						|
//         return new Promise(
 | 
						|
//             async(resolve, reject) => {
 | 
						|
//                 const s = (await this.db).prepare(
 | 
						|
//                     sql,
 | 
						|
//                     (err: any) => {
 | 
						|
//                         if (err) {
 | 
						|
//                             reject(err);
 | 
						|
//                             return;
 | 
						|
//                         }
 | 
						|
//
 | 
						|
//                         resolve(s);
 | 
						|
//                     }
 | 
						|
//                 );
 | 
						|
//             }
 | 
						|
//         );
 | 
						|
//     }
 | 
						|
//
 | 
						|
//
 | 
						|
//     getProfile(name: string): Promise<ProfileRecord | undefined> {
 | 
						|
//         return new Promise(
 | 
						|
//             async(resolve, reject) => {
 | 
						|
//                 (await this.stmtGetProfile).get(
 | 
						|
//                     this.toProfileId(name),
 | 
						|
//                     (err: any, data: any) => {
 | 
						|
//                         if (err) {
 | 
						|
//                             reject(err);
 | 
						|
//                             return;
 | 
						|
//                         }
 | 
						|
//
 | 
						|
//                         if (!data) {
 | 
						|
//                             resolve();
 | 
						|
//                             return;
 | 
						|
//                         }
 | 
						|
//
 | 
						|
//                         // tslint:disable-next-line: no-unsafe-any
 | 
						|
//                         data.profileData = JSON.parse(data.profileData) as ComplexCharacter;
 | 
						|
//
 | 
						|
//                         resolve(data as ProfileRecord);
 | 
						|
//                     }
 | 
						|
//                 );
 | 
						|
//             }
 | 
						|
//         );
 | 
						|
//     }
 | 
						|
//
 | 
						|
//
 | 
						|
//     protected run(stmtName: 'stmtStoreProfile' | 'stmtUpdateCounts', data: any[]): Promise<void> {
 | 
						|
//         return new Promise(
 | 
						|
//             async(resolve, reject) => {
 | 
						|
//                 if (!(stmtName in this)) {
 | 
						|
//                     throw new Error(`Unknown statement: ${stmtName}`);
 | 
						|
//                 }
 | 
						|
//
 | 
						|
//                 (await this[stmtName]).run(
 | 
						|
//                     ...data,
 | 
						|
//                     (err: any) => {
 | 
						|
//                         if (err) {
 | 
						|
//                             reject(err);
 | 
						|
//                             return;
 | 
						|
//                         }
 | 
						|
//
 | 
						|
//                         resolve();
 | 
						|
//                     }
 | 
						|
//                 );
 | 
						|
//             }
 | 
						|
//         );
 | 
						|
//     }
 | 
						|
//
 | 
						|
//
 | 
						|
//     async start(): Promise<void> {
 | 
						|
//         await this.stop();
 | 
						|
//
 | 
						|
//         await (await this.db).run(SQL.DatabaseMigration);
 | 
						|
//     }
 | 
						|
//
 | 
						|
//
 | 
						|
//     async stop(): Promise<void> {
 | 
						|
//         if (this.checkpointTimer) {
 | 
						|
//             clearInterval(this.checkpointTimer);
 | 
						|
//
 | 
						|
//             this.checkpointTimer = null;
 | 
						|
//         }
 | 
						|
//     }
 | 
						|
//
 | 
						|
// }
 | 
						|
 |