From 8cc0a1ac32940f5bee05c9bc325d3bb8d580d053 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Sat, 31 Dec 2022 16:21:16 -0800 Subject: [PATCH] Use new museum sort order in tests --- packages/skin-database/cli.ts | 3 +-- packages/skin-database/data/__tests__/skins.test.ts | 2 ++ packages/skin-database/data/skins.ts | 11 +++++++++++ packages/skin-database/museumOrder.sql | 8 -------- packages/skin-database/seeds/test_data.ts | 4 ++++ 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/packages/skin-database/cli.ts b/packages/skin-database/cli.ts index 4eb17b8c..4337ff1e 100755 --- a/packages/skin-database/cli.ts +++ b/packages/skin-database/cli.ts @@ -352,8 +352,7 @@ program computeMuseumOrder, } = arg; if (computeMuseumOrder) { - const sql = fs.readFileSync("./museumOrder.sql", { encoding: "utf8" }); - await knex.raw(sql); + await Skins.computeMuseumOrder(); console.log("Museum order updated."); } if (configureR2Cors) { diff --git a/packages/skin-database/data/__tests__/skins.test.ts b/packages/skin-database/data/__tests__/skins.test.ts index d25155b7..6633f0b9 100644 --- a/packages/skin-database/data/__tests__/skins.test.ts +++ b/packages/skin-database/data/__tests__/skins.test.ts @@ -157,6 +157,8 @@ describe("seeded", () => { skin_md5: "48bbdbbeb03d347e59b1eebda4d352d0", error: "Whoops", }); + + await Skins.computeMuseumOrder(); const page = await Skins.getMuseumPage({ offset: 0, first: 10 }); const hasZelda = page.some( (skin) => skin.md5 === "48bbdbbeb03d347e59b1eebda4d352d0" diff --git a/packages/skin-database/data/skins.ts b/packages/skin-database/data/skins.ts index 33f5543d..d2346e6e 100644 --- a/packages/skin-database/data/skins.ts +++ b/packages/skin-database/data/skins.ts @@ -10,6 +10,7 @@ import SkinModel from "./SkinModel"; import UserContext from "./UserContext"; import TweetModel from "./TweetModel"; import { TweetStatus } from "../types"; +import fs from "fs"; // const CDN_URL = "https://cdn.webampskins.org"; const CDN_URL = "https://r2.webampskins.org"; @@ -685,6 +686,16 @@ LIMIT ? OFFSET ?`, }); } +export async function computeMuseumOrder() { + await knex.transaction(async (trx) => { + await trx("museum_sort_order").del(); + const sql = fs.readFileSync(path.join(__dirname, "../museumOrder.sql"), { + encoding: "utf8", + }); + await trx.raw(sql); + }); +} + export async function getAllClassicSkins(): Promise< Array<{ fileName: string; md5: string }> > { diff --git a/packages/skin-database/museumOrder.sql b/packages/skin-database/museumOrder.sql index f2314751..b1d1ad6a 100644 --- a/packages/skin-database/museumOrder.sql +++ b/packages/skin-database/museumOrder.sql @@ -1,10 +1,4 @@ -- Precompute the sort order for the skin musuem. -BEGIN IMMEDIATE TRANSACTION; - -CREATE TABLE IF NOT EXISTS museum_sort_order (skin_md5 TEXT references skins(md5)); - -DELETE FROM museum_sort_order; - INSERT INTO museum_sort_order (skin_md5) -- A tweet score for each skin based on its tweets. @@ -62,5 +56,3 @@ INSERT INTO museum_sort_order (skin_md5) skin_reviews.review = 'APPROVED' DESC, -- Skins that have been rejected are worse than those that have not been reviewed skin_reviews.review = 'REJECTED' ASC; - -COMMIT; \ No newline at end of file diff --git a/packages/skin-database/seeds/test_data.ts b/packages/skin-database/seeds/test_data.ts index c79fcdb5..70d6516e 100644 --- a/packages/skin-database/seeds/test_data.ts +++ b/packages/skin-database/seeds/test_data.ts @@ -1,4 +1,5 @@ import * as Knex from "knex"; +import * as Skins from "../data/skins"; export async function seed(knex: Knex): Promise { // Deletes ALL existing entries @@ -9,6 +10,7 @@ export async function seed(knex: Knex): Promise { await knex("tweets").del(); await knex("archive_files").del(); await knex("refreshes").del(); + await knex("museum_sort_order").del(); // Inserts seed entries await knex("skins").insert([ { md5: "a_fake_md5", skin_type: 1, emails: "" }, @@ -56,4 +58,6 @@ export async function seed(knex: Knex): Promise { file_date: 957771892000, }, ]); + + await Skins.computeMuseumOrder(); }