optcg-db 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +34 -2
- package/dist/db/client.js.map +1 -1
- package/dist/db/restore.d.ts +2 -0
- package/dist/db/restore.d.ts.map +1 -0
- package/dist/db/restore.js +77 -0
- package/dist/db/restore.js.map +1 -0
- package/dist/db/schema.d.ts +5 -2
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +10 -10
- package/dist/db/schema.js.map +1 -1
- package/package.json +10 -1
package/dist/db/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,IAAI,CAAC;AASpB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CACd;AAuBD,wBAAgB,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,EAAE,CAAC,IAAI,CAoBlD;AAED,wBAAsB,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,cAAc,EACzE,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAY5B;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAM/C"}
|
package/dist/db/client.js
CHANGED
|
@@ -6,6 +6,8 @@ import "dotenv/config";
|
|
|
6
6
|
import pg from "pg";
|
|
7
7
|
import { logger } from "../shared/logger.js";
|
|
8
8
|
const { Pool } = pg;
|
|
9
|
+
const SLOW_QUERY_MS = 250;
|
|
10
|
+
const SQL_PREVIEW_LENGTH = 180;
|
|
9
11
|
let pool = null;
|
|
10
12
|
/**
|
|
11
13
|
* Build DB config from environment variables.
|
|
@@ -38,7 +40,7 @@ export function getPool(config) {
|
|
|
38
40
|
database: c.database,
|
|
39
41
|
ssl: c.ssl ? { rejectUnauthorized: false } : false,
|
|
40
42
|
max: 10,
|
|
41
|
-
idleTimeoutMillis:
|
|
43
|
+
idleTimeoutMillis: 600000,
|
|
42
44
|
connectionTimeoutMillis: 5000,
|
|
43
45
|
});
|
|
44
46
|
pool.on("error", (err) => {
|
|
@@ -49,7 +51,16 @@ export function getPool(config) {
|
|
|
49
51
|
}
|
|
50
52
|
export async function query(text, params) {
|
|
51
53
|
const p = getPool();
|
|
52
|
-
|
|
54
|
+
const startedAt = process.hrtime.bigint();
|
|
55
|
+
try {
|
|
56
|
+
const result = await p.query(text, params);
|
|
57
|
+
logQueryTiming(text, params, result.rowCount, startedAt);
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
logQueryTiming(text, params, null, startedAt, error);
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
53
64
|
}
|
|
54
65
|
export async function closePool() {
|
|
55
66
|
if (pool) {
|
|
@@ -58,4 +69,25 @@ export async function closePool() {
|
|
|
58
69
|
logger.info("Database pool closed");
|
|
59
70
|
}
|
|
60
71
|
}
|
|
72
|
+
function logQueryTiming(text, params, rowCount, startedAt, error) {
|
|
73
|
+
const durationMs = Number(process.hrtime.bigint() - startedAt) / 1_000_000;
|
|
74
|
+
const payload = {
|
|
75
|
+
duration_ms: Number(durationMs.toFixed(1)),
|
|
76
|
+
row_count: rowCount,
|
|
77
|
+
param_count: params?.length ?? 0,
|
|
78
|
+
sql: summarizeSql(text),
|
|
79
|
+
...(error instanceof Error ? { error: error.message } : {}),
|
|
80
|
+
};
|
|
81
|
+
if (error || durationMs >= SLOW_QUERY_MS) {
|
|
82
|
+
logger.warn("Slow database query", payload);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
logger.debug("Database query timing", payload);
|
|
86
|
+
}
|
|
87
|
+
function summarizeSql(text) {
|
|
88
|
+
const normalized = text.replace(/\s+/g, " ").trim();
|
|
89
|
+
if (normalized.length <= SQL_PREVIEW_LENGTH)
|
|
90
|
+
return normalized;
|
|
91
|
+
return normalized.slice(0, SQL_PREVIEW_LENGTH - 3) + "...";
|
|
92
|
+
}
|
|
61
93
|
//# sourceMappingURL=client.js.map
|
package/dist/db/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../src/db/restore.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { mkdtemp, rm } from "node:fs/promises";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
function requireEnv(name) {
|
|
6
|
+
const value = process.env[name];
|
|
7
|
+
if (!value)
|
|
8
|
+
throw new Error(`Missing required environment variable: ${name}`);
|
|
9
|
+
return value;
|
|
10
|
+
}
|
|
11
|
+
function run(command, args, env = process.env) {
|
|
12
|
+
return new Promise((resolve, reject) => {
|
|
13
|
+
const child = spawn(command, args, {
|
|
14
|
+
stdio: "inherit",
|
|
15
|
+
env,
|
|
16
|
+
});
|
|
17
|
+
child.on("error", reject);
|
|
18
|
+
child.on("exit", (code) => {
|
|
19
|
+
if (code === 0) {
|
|
20
|
+
resolve();
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
reject(new Error(`${command} exited with code ${code ?? "unknown"}`));
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async function main() {
|
|
28
|
+
const dumpUrl = requireEnv("DUMP_URL");
|
|
29
|
+
const host = requireEnv("DB_HOST");
|
|
30
|
+
const port = process.env.DB_PORT ?? "5432";
|
|
31
|
+
const database = process.env.DB_NAME ?? "optcg";
|
|
32
|
+
const user = requireEnv("DB_USER");
|
|
33
|
+
const password = requireEnv("DB_PASSWORD");
|
|
34
|
+
const clean = process.env.RESTORE_CLEAN !== "false";
|
|
35
|
+
const jobs = process.env.RESTORE_JOBS ?? "1";
|
|
36
|
+
const tempDir = await mkdtemp(path.join(tmpdir(), "optcg-restore-"));
|
|
37
|
+
const dumpPath = path.join(tempDir, "database.dump");
|
|
38
|
+
try {
|
|
39
|
+
console.log(`Downloading dump from ${dumpUrl} ...`);
|
|
40
|
+
await run("curl", ["-fL", dumpUrl, "-o", dumpPath]);
|
|
41
|
+
const pgEnv = {
|
|
42
|
+
...process.env,
|
|
43
|
+
PGPASSWORD: password,
|
|
44
|
+
};
|
|
45
|
+
const args = [
|
|
46
|
+
"--verbose",
|
|
47
|
+
"--no-owner",
|
|
48
|
+
"--no-privileges",
|
|
49
|
+
"--host",
|
|
50
|
+
host,
|
|
51
|
+
"--port",
|
|
52
|
+
port,
|
|
53
|
+
"--username",
|
|
54
|
+
user,
|
|
55
|
+
"--dbname",
|
|
56
|
+
database,
|
|
57
|
+
"--jobs",
|
|
58
|
+
jobs,
|
|
59
|
+
];
|
|
60
|
+
if (clean) {
|
|
61
|
+
args.push("--clean", "--if-exists");
|
|
62
|
+
}
|
|
63
|
+
args.push(dumpPath);
|
|
64
|
+
console.log(`Restoring dump into ${database}@${host}:${port} ...`);
|
|
65
|
+
await run("pg_restore", args, pgEnv);
|
|
66
|
+
console.log("Restore completed successfully.");
|
|
67
|
+
}
|
|
68
|
+
finally {
|
|
69
|
+
await rm(tempDir, { recursive: true, force: true });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
main().catch((error) => {
|
|
73
|
+
console.error("Restore failed");
|
|
74
|
+
console.error(error);
|
|
75
|
+
process.exitCode = 1;
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=restore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../src/db/restore.ts"],"names":[],"mappings":"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"}
|
package/dist/db/schema.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export interface Product {
|
|
|
7
7
|
language: Language;
|
|
8
8
|
name: string;
|
|
9
9
|
source: string;
|
|
10
|
+
set_codes: string[] | null;
|
|
10
11
|
tcgplayer_group_id: number | null;
|
|
11
12
|
released_at: string | null;
|
|
12
13
|
created_at: string;
|
|
@@ -42,6 +43,8 @@ export interface CardImage {
|
|
|
42
43
|
variant_index: number;
|
|
43
44
|
image_url: string;
|
|
44
45
|
source_url: string | null;
|
|
46
|
+
artist: string | null;
|
|
47
|
+
artist_ocr: boolean;
|
|
45
48
|
is_default: boolean;
|
|
46
49
|
label: string | null;
|
|
47
50
|
classified: boolean;
|
|
@@ -126,7 +129,7 @@ export type Language = "en" | "ja" | "fr" | "zh";
|
|
|
126
129
|
/** Card types in OPTCG */
|
|
127
130
|
export type CardType = "Leader" | "Character" | "Event" | "Stage";
|
|
128
131
|
/** Rarity codes */
|
|
129
|
-
export type Rarity = "C" | "UC" | "R" | "SR" | "SEC" | "L" | "P" | "SP";
|
|
132
|
+
export type Rarity = "C" | "UC" | "R" | "SR" | "SEC" | "L" | "P" | "SP" | "TR";
|
|
130
133
|
/** Color values */
|
|
131
134
|
export type Color = "Red" | "Green" | "Blue" | "Purple" | "Black" | "Yellow";
|
|
132
135
|
/** Attribute values */
|
|
@@ -137,6 +140,6 @@ export type DonFinish = "Normal" | "Foil" | "Gold";
|
|
|
137
140
|
export type ProductType = "card" | "sealed" | "don";
|
|
138
141
|
/** Label mapping from TCGPlayer suffix to card_images label */
|
|
139
142
|
export declare const TCGPLAYER_LABEL_MAP: Record<string, string>;
|
|
140
|
-
/** Suffixes that indicate the gold variant of an SP
|
|
143
|
+
/** Suffixes that indicate the gold variant of an SP label */
|
|
141
144
|
export declare const TCGPLAYER_GOLD_SP_SUFFIXES: Set<string>;
|
|
142
145
|
//# sourceMappingURL=schema.d.ts.map
|
package/dist/db/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,0BAA0B;AAC1B,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,0BAA0B;AAC1B,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAElE,mBAAmB;AACnB,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/E,mBAAmB;AACnB,MAAM,MAAM,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE7E,uBAAuB;AACvB,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7E,8BAA8B;AAC9B,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,8BAA8B;AAC9B,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpD,+DAA+D;AAC/D,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0BtD,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,0BAA0B,aAA2B,CAAC"}
|
package/dist/db/schema.js
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
export const TCGPLAYER_LABEL_MAP = {
|
|
7
7
|
"": "Standard",
|
|
8
8
|
"(Alternate Art)": "Alternate Art",
|
|
9
|
-
"(SP)": "SP
|
|
10
|
-
"(SP) (Gold)": "SP
|
|
11
|
-
"(SP) (Silver)": "SP
|
|
12
|
-
"(SP) (Wanted Poster)": "SP
|
|
13
|
-
"(Wanted Poster)": "SP
|
|
9
|
+
"(SP)": "SP",
|
|
10
|
+
"(SP) (Gold)": "SP",
|
|
11
|
+
"(SP) (Silver)": "SP",
|
|
12
|
+
"(SP) (Wanted Poster)": "SP",
|
|
13
|
+
"(Wanted Poster)": "SP",
|
|
14
14
|
"(Manga)": "Manga Art",
|
|
15
15
|
"(Parallel) (Manga)": "Manga Art",
|
|
16
16
|
"(Alternate Art) (Manga)": "Manga Art",
|
|
@@ -25,11 +25,11 @@ export const TCGPLAYER_LABEL_MAP = {
|
|
|
25
25
|
"(Parallel)": "Alternate Art",
|
|
26
26
|
"(Super Alternate Art)": "Alternate Art",
|
|
27
27
|
"(Red Super Alternate Art)": "Alternate Art",
|
|
28
|
-
"(Textured Foil)": "
|
|
29
|
-
"(Pirate Foil)": "
|
|
30
|
-
"(Jolly Roger Foil)": "
|
|
31
|
-
"(TR)": "
|
|
28
|
+
"(Textured Foil)": "Textured Foil",
|
|
29
|
+
"(Pirate Foil)": "Jolly Roger Foil",
|
|
30
|
+
"(Jolly Roger Foil)": "Jolly Roger Foil",
|
|
31
|
+
"(TR)": "TR",
|
|
32
32
|
};
|
|
33
|
-
/** Suffixes that indicate the gold variant of an SP
|
|
33
|
+
/** Suffixes that indicate the gold variant of an SP label */
|
|
34
34
|
export const TCGPLAYER_GOLD_SP_SUFFIXES = new Set(["(SP) (Gold)"]);
|
|
35
35
|
//# sourceMappingURL=schema.js.map
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4JH,+DAA+D;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,EAAE,EAAE,UAAU;IACd,iBAAiB,EAAE,eAAe;IAClC,MAAM,EAAE,IAAI;IACZ,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,IAAI;IACrB,sBAAsB,EAAE,IAAI;IAC5B,iBAAiB,EAAE,IAAI;IACvB,SAAS,EAAE,WAAW;IACtB,oBAAoB,EAAE,WAAW;IACjC,yBAAyB,EAAE,WAAW;IACtC,oCAAoC,EAAE,WAAW;IACjD,QAAQ,EAAE,MAAM;IAChB,aAAa,EAAE,WAAW;IAC1B,cAAc,EAAE,YAAY;IAC5B,YAAY,EAAE,UAAU;IACxB,SAAS,EAAE,OAAO;IAClB,iBAAiB,EAAE,SAAS;IAC5B,WAAW,EAAE,SAAS;IACtB,YAAY,EAAE,eAAe;IAC7B,uBAAuB,EAAE,eAAe;IACxC,2BAA2B,EAAE,eAAe;IAC5C,iBAAiB,EAAE,eAAe;IAClC,eAAe,EAAE,kBAAkB;IACnC,oBAAoB,EAAE,kBAAkB;IACxC,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "optcg-db",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Shared database layer (schema, migrations, connection pool) for the OPTCG Scryfall project",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/Reldnahc/optcg-db"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/Reldnahc/optcg-db",
|
|
11
|
+
"bugs": {
|
|
12
|
+
"url": "https://github.com/Reldnahc/optcg-db/issues"
|
|
13
|
+
},
|
|
6
14
|
"exports": {
|
|
7
15
|
"./db/client.js": "./dist/db/client.js",
|
|
8
16
|
"./db/schema.js": "./dist/db/schema.js"
|
|
@@ -13,6 +21,7 @@
|
|
|
13
21
|
"scripts": {
|
|
14
22
|
"build": "tsc",
|
|
15
23
|
"migrate": "tsx src/db/migrate.ts",
|
|
24
|
+
"restore": "tsx src/db/restore.ts",
|
|
16
25
|
"prepublishOnly": "tsc",
|
|
17
26
|
"typecheck": "tsc --noEmit"
|
|
18
27
|
},
|