From 961ceaf605c42e57e2ed028630bca4a8e474ee41 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Mon, 20 Apr 2020 21:37:43 -0700 Subject: [PATCH] Add more types --- .../skin-database/{addSkin.js => addSkin.ts} | 26 +++++++++++++------ experiments/skin-database/data/skins.ts | 14 +++++----- 2 files changed, 25 insertions(+), 15 deletions(-) rename experiments/skin-database/{addSkin.js => addSkin.ts} (66%) diff --git a/experiments/skin-database/addSkin.js b/experiments/skin-database/addSkin.ts similarity index 66% rename from experiments/skin-database/addSkin.js rename to experiments/skin-database/addSkin.ts index 972c578d..94516b03 100644 --- a/experiments/skin-database/addSkin.js +++ b/experiments/skin-database/addSkin.ts @@ -1,10 +1,12 @@ -const fs = require("fs"); -const md5Buffer = require("md5"); -const Skins = require("./data/skins"); -const S3 = require("./s3"); -const Shooter = require("./shooter"); -const temp = require("temp").track(); -const Analyser = require("./analyser"); +import * as Skins from "./data/skins"; +import fs from "fs"; +import md5Buffer from "md5"; +import S3 from "./s3"; +import Shooter from "./shooter"; +import _temp from "temp"; +import Analyser from "./analyser"; + +const temp = _temp.track(); // TODO // Extract the readme @@ -12,7 +14,15 @@ const Analyser = require("./analyser"); // Upload to Internet Archive // Store the Internet Archive item name // Construct IA Webamp UR -async function addSkinFromBuffer(buffer, filePath, uploader) { +type Result = + | { md5: string; status: "FOUND" } + | { md5: string; status: "ADDED"; averageColor: string }; + +async function addSkinFromBuffer( + buffer: Buffer, + filePath: string, + uploader: string +): Promise { const md5 = md5Buffer(buffer); const skin = await Skins.getSkinByMd5(md5); if (skin != null) { diff --git a/experiments/skin-database/data/skins.ts b/experiments/skin-database/data/skins.ts index 24ad15e5..5c9b58d0 100644 --- a/experiments/skin-database/data/skins.ts +++ b/experiments/skin-database/data/skins.ts @@ -1,9 +1,9 @@ -const db = require("../db"); -const path = require("path"); +import db from "../db"; +import path from "path"; +import S3 from "../s3"; +import logger from "../logger"; const skins = db.get("skins"); const iaItems = db.get("internetArchiveItems"); -const S3 = require("../s3"); -const logger = require("../logger"); type TweetStatus = "APPROVED" | "REJECTED" | "TWEETED" | "UNREVIEWED"; @@ -93,7 +93,7 @@ async function getProp( return value == null ? null : value; } -async function addSkin({ md5, filePath, uploader, averageColor }) { +export async function addSkin({ md5, filePath, uploader, averageColor }) { skins.insert({ md5, type: "CLASSIC", @@ -133,7 +133,7 @@ async function getMd5ByAnything(anything: string): Promise { return imageHashMd5; } -async function getSkinByMd5(md5) { +export async function getSkinByMd5(md5: string) { const skin = await skins.findOne({ md5, type: "CLASSIC" }); if (skin == null) { logger.warn("Could not find skin in database", { md5, alert: true }); @@ -262,7 +262,7 @@ async function getStats(): Promise<{ const approved = await skins.count({ approved: true }); const rejected = await skins.count({ rejected: true }); const tweeted = await skins.count({ tweeted: true }); - const tweetable = await getTweetableSkinCount(); + const tweetable = getTweetableSkinCount(); return { approved, rejected, tweeted, tweetable }; }