From 40fbf475f43cb3d3f62fdd1556876a29a11ebb8d Mon Sep 17 00:00:00 2001 From: ppc Date: Wed, 2 Apr 2025 19:27:24 +0100 Subject: [PATCH] fix schema linkage --- amnet-native/app/card/PhyscialCardScan.tsx | 5 +-- amnet-native/models/AMCard.ts | 36 +++++----------------- amnet-native/models/AMCardData.ts | 2 +- amnet-native/models/AMPhysicalCardData.ts | 28 +++++++++++++++++ amnet-native/models/RealmContext.ts | 3 +- 5 files changed, 41 insertions(+), 33 deletions(-) create mode 100644 amnet-native/models/AMPhysicalCardData.ts diff --git a/amnet-native/app/card/PhyscialCardScan.tsx b/amnet-native/app/card/PhyscialCardScan.tsx index 67fadb8..84242fc 100644 --- a/amnet-native/app/card/PhyscialCardScan.tsx +++ b/amnet-native/app/card/PhyscialCardScan.tsx @@ -3,10 +3,11 @@ import {Card, Paragraph, useTheme} from "react-native-paper"; import {useCallback, useLayoutEffect, useState} from "react"; import {TextInput, TouchableOpacity, View} from "react-native"; +import RealmContext from "../../models/RealmContext"; import {useModalStyles} from "../../utils/ModalStyles"; -import RealmContext from "../../models/RealmContext"; -import {AMCard, AMPhysicalCardData} from "../../models/AMCard"; +import {AMCard} from "../../models/AMCard"; +import {AMPhysicalCardData} from "../../models/AMPhysicalCardData"; import {felicaCardReadAsync, icCard0008Number, ICType} from "../../lib/iccard"; const {useRealm} = RealmContext; diff --git a/amnet-native/models/AMCard.ts b/amnet-native/models/AMCard.ts index 5dd64d3..df7fcff 100644 --- a/amnet-native/models/AMCard.ts +++ b/amnet-native/models/AMCard.ts @@ -1,7 +1,10 @@ import {Realm} from "realm"; -import {AmusementICVendor, ICType} from "../lib/iccard"; -import {AMCardRecentUse} from "./AMCardRecentUse"; + +import {ICType} from "../lib/iccard"; + import {AMCardData} from "./AMCardData"; +import {AMCardRecentUse} from "./AMCardRecentUse"; +import {AMPhysicalCardData} from "./AMPhysicalCardData"; export class AMCard extends Realm.Object implements AMCardData { _id!: Realm.BSON.ObjectId; @@ -51,34 +54,9 @@ export class AMCard extends Realm.Object implements AMCardData { name: {type: "string", default: "New Card", indexed: true}, added: {type: "date", default: new Date(), indexed: true}, lastUsed: {type: "date", optional: true, indexed: true}, - usageHistory: {type: "linkingObjects", objectType: "cardUsageHistory", property: "card"}, - physicalCardData: {type: "object", objectType: "physicalCard", optional: true} + recentUses: {type: "linkingObjects", objectType: AMCardRecentUse.schema.name, property: "card"}, + physicalCardData: {type: "object", objectType: AMPhysicalCardData.schema.name, optional: true} } }; } -/** - * Holds physical card information when a card is imported via NFC/FeliCa - */ -export class AMPhysicalCardData extends Realm.Object { - - cardIDm: string; - cardType: ICType; - cardVendor: AmusementICVendor | null; - - get isBootlegAmusementCard() { - // real cards have an IDm manufacturer code of 012E (first two bytes of the IDm or in this case, the first 4 characters) - return this.cardType === ICType.Amusement && !this.cardIDm.startsWith("012E"); - } - - static schema: Realm.ObjectSchema = { - name: "physicalCard", - primaryKey: "cardIDm", - - properties: { - cardIDm: "string", - cardType: "int", - cardVendor: {type: "int", optional: true} - } - }; -} \ No newline at end of file diff --git a/amnet-native/models/AMCardData.ts b/amnet-native/models/AMCardData.ts index 32f5f4d..aeb59e3 100644 --- a/amnet-native/models/AMCardData.ts +++ b/amnet-native/models/AMCardData.ts @@ -1,4 +1,4 @@ -import {AMPhysicalCardData} from "./AMCard"; +import {AMPhysicalCardData} from "./AMPhysicalCardData"; export interface AMCardData { code: string; diff --git a/amnet-native/models/AMPhysicalCardData.ts b/amnet-native/models/AMPhysicalCardData.ts new file mode 100644 index 0000000..1341e3b --- /dev/null +++ b/amnet-native/models/AMPhysicalCardData.ts @@ -0,0 +1,28 @@ +import {Realm} from "realm"; +import {AmusementICVendor, ICType} from "../lib/iccard"; + +/** + * Holds physical card information when a card is imported via NFC/FeliCa + */ +export class AMPhysicalCardData extends Realm.Object { + + cardIDm: string; + cardType: ICType; + cardVendor: AmusementICVendor | null; + + get isBootlegAmusementCard() { + // real cards have an IDm manufacturer code of 012E (first two bytes of the IDm or in this case, the first 4 characters) + return this.cardType === ICType.Amusement && !this.cardIDm.startsWith("012E"); + } + + static schema: Realm.ObjectSchema = { + name: "physicalCard", + primaryKey: "cardIDm", + + properties: { + cardIDm: "string", + cardType: "int", + cardVendor: {type: "int", optional: true} + } + }; +} \ No newline at end of file diff --git a/amnet-native/models/RealmContext.ts b/amnet-native/models/RealmContext.ts index 9ec1cbd..ab4acdd 100644 --- a/amnet-native/models/RealmContext.ts +++ b/amnet-native/models/RealmContext.ts @@ -1,9 +1,10 @@ import {Realm} from "realm"; import {createRealmContext} from "@realm/react"; +import {AMCard} from "./AMCard"; import {AMServer} from "./AMServer"; import {AMCardRecentUse} from "./AMCardRecentUse"; -import {AMCard, AMPhysicalCardData} from "./AMCard"; +import {AMPhysicalCardData} from "./AMPhysicalCardData"; const migrationFunction = (oldRealm: Realm, newRealm: Realm) => { if (oldRealm.schemaVersion < 5) {