mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-12 00:54:53 -07:00
Webatrice: KnownHosts component (#4456)
* refactor dexie services for future schema updates Co-authored-by: Jeremy Letto <jeremy.letto@datasite.com>
This commit is contained in:
parent
37879c4255
commit
6ce346af4a
54 changed files with 1381 additions and 1291 deletions
19
webclient/src/services/dexie/DexieDTOs/CardDTO.ts
Normal file
19
webclient/src/services/dexie/DexieDTOs/CardDTO.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import { Card } from 'types';
|
||||
|
||||
import { dexieService } from '../DexieService';
|
||||
|
||||
export class CardDTO extends Card {
|
||||
save() {
|
||||
return dexieService.cards.put(this);
|
||||
}
|
||||
|
||||
static get(name) {
|
||||
return dexieService.cards.where('name').equalsIgnoreCase(name).first();
|
||||
}
|
||||
|
||||
static bulkAdd(cards: CardDTO[]): Promise<any> {
|
||||
return dexieService.cards.bulkPut(cards);
|
||||
}
|
||||
};
|
||||
|
||||
dexieService.cards.mapToClass(CardDTO);
|
||||
32
webclient/src/services/dexie/DexieDTOs/HostDTO.ts
Normal file
32
webclient/src/services/dexie/DexieDTOs/HostDTO.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
import { IndexableType } from 'dexie';
|
||||
import { Host } from 'types';
|
||||
|
||||
import { dexieService } from '../DexieService';
|
||||
|
||||
export class HostDTO extends Host {
|
||||
save() {
|
||||
return dexieService.hosts.put(this);
|
||||
}
|
||||
|
||||
static add(host: Host): Promise<IndexableType> {
|
||||
return dexieService.hosts.add(host);
|
||||
}
|
||||
|
||||
static get(id: number): Promise<HostDTO> {
|
||||
return dexieService.hosts.where('id').equals(id).first();
|
||||
}
|
||||
|
||||
static getAll(): Promise<HostDTO[]> {
|
||||
return dexieService.hosts.toArray();
|
||||
}
|
||||
|
||||
static bulkAdd(hosts: Host[]): Promise<IndexableType> {
|
||||
return dexieService.hosts.bulkAdd(hosts);
|
||||
}
|
||||
|
||||
static delete(id: string): Promise<void> {
|
||||
return dexieService.hosts.delete(id);
|
||||
}
|
||||
};
|
||||
|
||||
dexieService.hosts.mapToClass(HostDTO);
|
||||
19
webclient/src/services/dexie/DexieDTOs/SetDTO.ts
Normal file
19
webclient/src/services/dexie/DexieDTOs/SetDTO.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import { Set } from 'types';
|
||||
|
||||
import { dexieService } from '../DexieService';
|
||||
|
||||
export class SetDTO extends Set {
|
||||
save() {
|
||||
return dexieService.sets.put(this);
|
||||
}
|
||||
|
||||
static get(name) {
|
||||
return dexieService.sets.where('name').equalsIgnoreCase(name).first();
|
||||
}
|
||||
|
||||
static bulkAdd(sets: SetDTO[]): Promise<any> {
|
||||
return dexieService.sets.bulkPut(sets);
|
||||
}
|
||||
};
|
||||
|
||||
dexieService.sets.mapToClass(SetDTO);
|
||||
22
webclient/src/services/dexie/DexieDTOs/SettingDTO.ts
Normal file
22
webclient/src/services/dexie/DexieDTOs/SettingDTO.ts
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import { Setting } from 'types';
|
||||
|
||||
import { dexieService } from '../DexieService';
|
||||
|
||||
export class SettingDTO extends Setting {
|
||||
constructor(user) {
|
||||
super();
|
||||
|
||||
this.user = user;
|
||||
this.autoConnect = false;
|
||||
}
|
||||
|
||||
save() {
|
||||
return dexieService.settings.put(this);
|
||||
}
|
||||
|
||||
static get(user) {
|
||||
return dexieService.settings.where('user').equalsIgnoreCase(user).first();
|
||||
}
|
||||
};
|
||||
|
||||
dexieService.settings.mapToClass(SettingDTO);
|
||||
19
webclient/src/services/dexie/DexieDTOs/TokenDTO.ts
Normal file
19
webclient/src/services/dexie/DexieDTOs/TokenDTO.ts
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
import { Token } from 'types';
|
||||
|
||||
import { dexieService } from '../DexieService';
|
||||
|
||||
export class TokenDTO extends Token {
|
||||
save() {
|
||||
return dexieService.tokens.put(this);
|
||||
}
|
||||
|
||||
static get(name) {
|
||||
return dexieService.tokens.where('name.value').equalsIgnoreCase(name).first();
|
||||
}
|
||||
|
||||
static bulkAdd(tokens: TokenDTO[]): Promise<any> {
|
||||
return dexieService.tokens.bulkPut(tokens);
|
||||
}
|
||||
};
|
||||
|
||||
dexieService.tokens.mapToClass(TokenDTO);
|
||||
5
webclient/src/services/dexie/DexieDTOs/index.ts
Normal file
5
webclient/src/services/dexie/DexieDTOs/index.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
export * from './CardDTO';
|
||||
export * from './SetDTO';
|
||||
export * from './SettingDTO';
|
||||
export * from './TokenDTO';
|
||||
export * from './HostDTO';
|
||||
17
webclient/src/services/dexie/DexieSchemas/v1.schema.ts
Normal file
17
webclient/src/services/dexie/DexieSchemas/v1.schema.ts
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
export enum Stores {
|
||||
SETTINGS = 'settings',
|
||||
CARDS = 'cards',
|
||||
SETS = 'sets',
|
||||
TOKENS = 'tokens',
|
||||
HOSTS = 'hosts',
|
||||
}
|
||||
|
||||
export const schemaV1 = (db) => {
|
||||
db.version(1).stores({
|
||||
[Stores.CARDS]: 'name',
|
||||
[Stores.SETS]: 'code',
|
||||
[Stores.SETTINGS]: 'user',
|
||||
[Stores.TOKENS]: 'name.value',
|
||||
[Stores.HOSTS]: '++id',
|
||||
});
|
||||
}
|
||||
33
webclient/src/services/dexie/DexieService.ts
Normal file
33
webclient/src/services/dexie/DexieService.ts
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import Dexie from 'dexie';
|
||||
|
||||
import { Stores, schemaV1 } from './DexieSchemas/v1.schema';
|
||||
|
||||
class DexieService {
|
||||
private db: Dexie = new Dexie('Webatrice');
|
||||
|
||||
constructor() {
|
||||
schemaV1(this.db);
|
||||
}
|
||||
|
||||
get settings() {
|
||||
return this.db.table(Stores.SETTINGS);
|
||||
}
|
||||
|
||||
get cards() {
|
||||
return this.db.table(Stores.CARDS);
|
||||
}
|
||||
|
||||
get sets() {
|
||||
return this.db.table(Stores.SETS);
|
||||
}
|
||||
|
||||
get tokens() {
|
||||
return this.db.table(Stores.TOKENS);
|
||||
}
|
||||
|
||||
get hosts() {
|
||||
return this.db.table(Stores.HOSTS);
|
||||
}
|
||||
}
|
||||
|
||||
export const dexieService = new DexieService();
|
||||
1
webclient/src/services/dexie/index.ts
Normal file
1
webclient/src/services/dexie/index.ts
Normal file
|
|
@ -0,0 +1 @@
|
|||
export * from './DexieDTOs';
|
||||
Loading…
Add table
Add a link
Reference in a new issue