mirror of
https://gitea.tendokyu.moe/ppc/amnet.git
synced 2026-09-27 00:50:06 +03:00
76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
import {Realm} from "realm";
|
|
import {AmusementICVendor, ICType} from "../lib/iccard";
|
|
|
|
export interface AMCardData {
|
|
code: string;
|
|
name: string;
|
|
|
|
added: Date;
|
|
lastUsed?: Date | null;
|
|
physicalCardData?: AMPhysicalCardData | null;
|
|
}
|
|
|
|
export class AMCard extends Realm.Object<AMCard> implements AMCardData {
|
|
_id!: Realm.BSON.ObjectId;
|
|
|
|
code: string;
|
|
name: string;
|
|
|
|
added: Date;
|
|
lastUsed?: Date;
|
|
lastUsedGameId?: string | null;
|
|
|
|
physicalCardData?: AMPhysicalCardData | null = null;
|
|
|
|
static generate(code: string, name: string) {
|
|
return {
|
|
_id: new Realm.BSON.ObjectId(),
|
|
added: new Date(),
|
|
code: code,
|
|
name: name
|
|
};
|
|
}
|
|
|
|
static delete(realm: Realm, card: AMCard) {
|
|
realm.write(() => {
|
|
if (card.physicalCardData) {
|
|
realm.delete(card.physicalCardData);
|
|
}
|
|
|
|
realm.delete(card);
|
|
});
|
|
}
|
|
|
|
static schema: Realm.ObjectSchema = {
|
|
name: "card",
|
|
primaryKey: "_id",
|
|
|
|
properties: {
|
|
_id: "objectId",
|
|
code: "string",
|
|
name: {type: "string", default: "New Card"},
|
|
added: {type: "date", default: new Date()},
|
|
lastUsed: {type: "date", optional: true, indexed: true},
|
|
lastUsedGameId: {type: "string", optional: true, indexed: true},
|
|
physicalCardData: {type: "object", objectType: "physicalCard", optional: true}
|
|
}
|
|
};
|
|
}
|
|
|
|
export class AMPhysicalCardData extends Realm.Object<AMPhysicalCardData> {
|
|
|
|
cardIDm: string;
|
|
cardType: ICType;
|
|
cardVendor: AmusementICVendor | null;
|
|
|
|
static schema: Realm.ObjectSchema = {
|
|
name: "physicalCard",
|
|
primaryKey: "cardIDm",
|
|
|
|
properties: {
|
|
cardIDm: "string",
|
|
cardType: "int",
|
|
cardVendor: {type: "int", optional: true}
|
|
}
|
|
};
|
|
} |