diff --git a/api.js b/api.js index 86ea160..2a25da5 100644 --- a/api.js +++ b/api.js @@ -16,17 +16,17 @@ import { parseListingLanguagesFromInput, filterByCondition, detectCondition, fla import { buildEbaySearchQuery } from "./lib/search/listingQuery.js"; import { EBAY_CATEGORY_TCG_SINGLE_CARDS_US } from "./lib/search/ebayCategories.js"; import { saveGradeLog, getGradeLogs, saveDrop, getDrops, getDrop, saveWebhook, getWebhooks, deleteWebhook, getFirestoreStatus, saveAlert, getActiveAlerts, updateAlert, getAlertsByEmail, saveErrorLog, getErrorLogs, clearErrorLogs, getPortfolio, addToPortfolio, removeFromPortfolio, updatePortfolioCard, savePortfolioSnapshot, getPortfolioSnapshots, listPortfolioUserIds, trackSearchFrequency, getTopSearchedCards } from "./lib/data/firestore.js"; -import { getDemoSearchResult, getDemoResult, listDemoCards, findDemoByNumber } from "./lib/data/demo.js"; +import { getDemoSearchResult, getDemoResult, listDemoCards, findDemoByNumber } from "./lib/cards/demo.js"; import { csvEscape, csvRow } from "./lib/data/csv.js"; -import { createApiKey, listApiKeys, listAllKeys, listKeysByOwner, getApiKey, updateApiKey, deleteApiKey, rotateApiKey, validateApiKey } from "./lib/data/api-keys.js"; -import { recordSoldPrices, getPriceHistory, computePriceTrend } from "./lib/data/price-history.js"; +import { createApiKey, listApiKeys, listAllKeys, listKeysByOwner, getApiKey, updateApiKey, deleteApiKey, rotateApiKey, validateApiKey } from "./lib/auth/api-keys.js"; +import { recordSoldPrices, getPriceHistory, computePriceTrend } from "./lib/cards/price-history.js"; import { sendAlertEmail } from "./lib/data/email.js"; import { logRequest, getAnalytics, getAnalyticsByUser } from "./lib/data/analytics.js"; -import { saveGradedImages } from "./lib/data/grading-dataset.js"; -import { verifyGoogleToken, generateJwt, verifyJwt } from "./lib/data/auth.js"; +import { saveGradedImages } from "./lib/cards/grading-dataset.js"; +import { verifyGoogleToken, generateJwt, verifyJwt } from "./lib/auth/auth.js"; import { seedFromTCGPlayer } from "./lib/sources/tcgplayer.js"; -import { getOrCreateCard, findCardByQuery, parseCardIdentity, resolveCardIdToQuery, SET_NAME_MAP } from "./lib/data/card-identity.js"; -import { initCardDatabase, searchCards, refreshCardDatabase, getAllSets, getSetWithCards, findCardByCardId } from "./lib/data/card-database.js"; +import { getOrCreateCard, findCardByQuery, parseCardIdentity, resolveCardIdToQuery, SET_NAME_MAP } from "./lib/cards/card-identity.js"; +import { initCardDatabase, searchCards, refreshCardDatabase, getAllSets, getSetWithCards, findCardByCardId } from "./lib/cards/card-database.js"; import { fileURLToPath } from "url"; import path from "path"; @@ -522,7 +522,7 @@ app.get("/api/analytics", ownerOnly, async (req, res) => { // GET /api/grading-dataset/stats app.get("/api/grading-dataset/stats", ownerOnly, async (req, res) => { try { - const { getDatasetStats } = await import("./lib/data/grading-dataset.js"); + const { getDatasetStats } = await import("./lib/cards/grading-dataset.js"); const stats = await getDatasetStats(); res.json(stats); } catch (e) { diff --git a/cloudbuild.yml b/cloudbuild.yml deleted file mode 100644 index 9ef6fc9..0000000 --- a/cloudbuild.yml +++ /dev/null @@ -1,9 +0,0 @@ -steps: - - name: gcr.io/kaniko-project/executor:v1.23.2 - args: - - --destination=gcr.io/$PROJECT_ID/casecomp-api:latest - - --destination=gcr.io/$PROJECT_ID/casecomp-api:$SHORT_SHA - - --cache=true - - --cache-ttl=168h - - --reproducible - - --image-name-with-digest-file=/workspace/digest.txt diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 0aab023..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,12 +0,0 @@ -services: - redis: - image: redis:7-alpine - ports: - - "6379:6379" - volumes: - - redis-data:/data - command: redis-server --appendonly yes - restart: unless-stopped - -volumes: - redis-data: diff --git a/index.js b/index.js index d1c40b9..fc8d463 100644 --- a/index.js +++ b/index.js @@ -29,7 +29,7 @@ import { searchMagi } from "./lib/sources/magi.js"; import { searchYahooAuctions } from "./lib/sources/yahooauctions.js"; import { searchSnkrdunk } from "./lib/sources/snkrdunk.js"; import { getPsaGradingSignal } from "./lib/grading/psa.js"; -import { getDemoSearchResult, listDemoCards } from "./lib/data/demo.js"; +import { getDemoSearchResult, listDemoCards } from "./lib/cards/demo.js"; export const CARDS = [ "Giratina V Alt Art" diff --git a/lib/data/api-keys.js b/lib/auth/api-keys.js similarity index 100% rename from lib/data/api-keys.js rename to lib/auth/api-keys.js diff --git a/lib/data/auth.js b/lib/auth/auth.js similarity index 100% rename from lib/data/auth.js rename to lib/auth/auth.js diff --git a/lib/data/card-database.js b/lib/cards/card-database.js similarity index 100% rename from lib/data/card-database.js rename to lib/cards/card-database.js diff --git a/lib/data/card-identity.js b/lib/cards/card-identity.js similarity index 100% rename from lib/data/card-identity.js rename to lib/cards/card-identity.js diff --git a/lib/data/demo.js b/lib/cards/demo.js similarity index 100% rename from lib/data/demo.js rename to lib/cards/demo.js diff --git a/lib/data/grading-dataset.js b/lib/cards/grading-dataset.js similarity index 100% rename from lib/data/grading-dataset.js rename to lib/cards/grading-dataset.js diff --git a/lib/data/price-history.js b/lib/cards/price-history.js similarity index 100% rename from lib/data/price-history.js rename to lib/cards/price-history.js diff --git a/test/unit-test.js b/test/unit-test.js index ad2c743..9ac18d2 100644 --- a/test/unit-test.js +++ b/test/unit-test.js @@ -1,6 +1,6 @@ import { parseGradeJSON, roundGrade, validateAndShape } from "../lib/grading/grading.js"; import { buildSignal } from "../lib/grading/psa.js"; -import { deriveEra } from "../lib/data/card-database.js"; +import { deriveEra } from "../lib/cards/card-database.js"; import { cornerCropsToImageBlocks, imageBlockFromUrl, imageBlockFromBase64, parseAnthropicResponse, parseTogetherResponse } from "../lib/grading/preprocessing.js"; import { buildEbaySearchQuery, describeListingSearch } from "../lib/search/listingQuery.js"; import { @@ -22,13 +22,13 @@ import { filterToLikelyTcgCards, isGradedCard, } from "../lib/search/filters.js"; -import { isDemoQuery, getDemoResult, getDemoSearchResult, listDemoCards, findDemoByNumber } from "../lib/data/demo.js"; -import { parseCardIdentity, buildCardId, SET_NAME_MAP, resolveCardIdToQuery } from "../lib/data/card-identity.js"; +import { isDemoQuery, getDemoResult, getDemoSearchResult, listDemoCards, findDemoByNumber } from "../lib/cards/demo.js"; +import { parseCardIdentity, buildCardId, SET_NAME_MAP, resolveCardIdToQuery } from "../lib/cards/card-identity.js"; import { buildAlertEmailSubject, sendAlertEmail } from "../lib/data/email.js"; import { csvEscape, csvRow } from "../lib/data/csv.js"; -import { matchesQuery, searchCards, getAllSets, getSetWithCards } from "../lib/data/card-database.js"; -import { computePriceTrend } from "../lib/data/price-history.js"; -import { findCardByCardId } from "../lib/data/card-database.js"; +import { matchesQuery, searchCards, getAllSets, getSetWithCards } from "../lib/cards/card-database.js"; +import { computePriceTrend } from "../lib/cards/price-history.js"; +import { findCardByCardId } from "../lib/cards/card-database.js"; let passed = 0; let failed = 0; @@ -1137,7 +1137,7 @@ console.log("\n\x1b[1m=== JWT auth ===\x1b[0m"); { process.env.CASECOMP_JWT_SECRET = "test-secret-key-for-unit-tests-only"; - const { generateJwt, verifyJwt } = await import("../lib/data/auth.js"); + const { generateJwt, verifyJwt } = await import("../lib/auth/auth.js"); test("generateJwt: returns 3-part token", () => { const jwt = generateJwt({ sub: "123", email: "test@test.com" });