Migrate most things from item translations
Not the modeling code yet though!
This commit is contained in:
parent
6686f13154
commit
62531cfe34
7 changed files with 45 additions and 74 deletions
|
@ -49,7 +49,7 @@ async function handle(req, res) {
|
||||||
// Modified, unless the data really did change.)
|
// Modified, unless the data really did change.)
|
||||||
res.setHeader(
|
res.setHeader(
|
||||||
"Cache-Control",
|
"Cache-Control",
|
||||||
"public, max-age=3600, stale-while-revalidate=86400"
|
"public, max-age=3600, stale-while-revalidate=86400",
|
||||||
);
|
);
|
||||||
return res.send(itemValues);
|
return res.send(itemValues);
|
||||||
}
|
}
|
||||||
|
@ -58,11 +58,8 @@ async function loadAllNcItemNamesAndIds() {
|
||||||
const db = await connectToDb();
|
const db = await connectToDb();
|
||||||
|
|
||||||
const [rows] = await db.query(`
|
const [rows] = await db.query(`
|
||||||
SELECT items.id, item_translations.name FROM items
|
SELECT items.id, items.name FROM items
|
||||||
INNER JOIN item_translations ON item_translations.item_id = items.id
|
WHERE items.rarity_index IN (0, 500) OR is_manually_nc = 1
|
||||||
WHERE
|
|
||||||
(items.rarity_index IN (0, 500) OR is_manually_nc = 1)
|
|
||||||
AND item_translations.locale = "en"
|
|
||||||
`);
|
`);
|
||||||
|
|
||||||
return rows.map(({ id, name }) => ({ id, name: normalizeItemName(name) }));
|
return rows.map(({ id, name }) => ({ id, name: normalizeItemName(name) }));
|
||||||
|
@ -75,13 +72,13 @@ async function loadAllNcItemNamesAndIds() {
|
||||||
*/
|
*/
|
||||||
async function loadOWLSValuesByIdOrName() {
|
async function loadOWLSValuesByIdOrName() {
|
||||||
const res = await fetch(
|
const res = await fetch(
|
||||||
`https://neo-owls.herokuapp.com/itemdata/owls_script/`
|
`https://neo-owls.herokuapp.com/itemdata/owls_script/`,
|
||||||
);
|
);
|
||||||
const json = await res.json();
|
const json = await res.json();
|
||||||
|
|
||||||
if (!res.ok) {
|
if (!res.ok) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
`Could not load OWLS Pricer data: ${res.status} ${res.statusText}`
|
`Could not load OWLS Pricer data: ${res.status} ${res.statusText}`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +134,7 @@ function normalizeItemName(name) {
|
||||||
async function handleWithBeeline(req, res) {
|
async function handleWithBeeline(req, res) {
|
||||||
beeline.withTrace(
|
beeline.withTrace(
|
||||||
{ name: "api/allNCTradeValues", operation_name: "api/allNCTradeValues" },
|
{ name: "api/allNCTradeValues", operation_name: "api/allNCTradeValues" },
|
||||||
() => handle(req, res)
|
() => handle(req, res),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -115,8 +115,7 @@ async function handle(req, res) {
|
||||||
|
|
||||||
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
||||||
try {
|
try {
|
||||||
const { itemLoader, itemTranslationLoader, zoneLoader } =
|
const { itemLoader, zoneLoader } = buildLoaders(db);
|
||||||
buildLoaders(db);
|
|
||||||
|
|
||||||
// Copied from setLayerBodyId mutation
|
// Copied from setLayerBodyId mutation
|
||||||
const itemId = await db
|
const itemId = await db
|
||||||
|
@ -127,9 +126,8 @@ async function handle(req, res) {
|
||||||
)
|
)
|
||||||
.then(([rows]) => normalizeRow(rows[0]).parentId);
|
.then(([rows]) => normalizeRow(rows[0]).parentId);
|
||||||
|
|
||||||
const [item, itemTranslation, zone, bodyName] = await Promise.all([
|
const [item, zone, bodyName] = await Promise.all([
|
||||||
itemLoader.load(itemId),
|
itemLoader.load(itemId),
|
||||||
itemTranslationLoader.load(itemId),
|
|
||||||
zoneLoader.load(layer.zoneId),
|
zoneLoader.load(layer.zoneId),
|
||||||
loadBodyName(layer.bodyId, db),
|
loadBodyName(layer.bodyId, db),
|
||||||
]);
|
]);
|
||||||
|
@ -137,7 +135,7 @@ async function handle(req, res) {
|
||||||
await logToDiscord({
|
await logToDiscord({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `🛠 ${itemTranslation.name}`,
|
title: `🛠 ${item.name}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: item.thumbnailUrl,
|
url: item.thumbnailUrl,
|
||||||
height: 80,
|
height: 80,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
yarn run --silent mysqldump openneo_impress species colors zones \
|
yarn run --silent mysqldump openneo_impress species colors zones \
|
||||||
> $(dirname $0)/../public-data-constants.sql \
|
> $(dirname $0)/../public-data-constants.sql \
|
||||||
&& yarn run --silent mysqldump openneo_impress alt_styles items item_translations \
|
&& yarn run --silent mysqldump openneo_impress alt_styles items \
|
||||||
parents_swf_assets pet_states pet_types swf_assets \
|
parents_swf_assets pet_states pet_types swf_assets \
|
||||||
| gzip -c \
|
| gzip -c \
|
||||||
> $(dirname $0)/../public-data-from-modeling.sql.gz
|
> $(dirname $0)/../public-data-from-modeling.sql.gz
|
|
@ -1,6 +1,6 @@
|
||||||
yarn run --silent mysqldump --no-data openneo_impress closet_hangers closet_lists \
|
yarn run --silent mysqldump --no-data openneo_impress closet_hangers closet_lists \
|
||||||
colors items item_translations modeling_logs parents_swf_assets pet_types \
|
colors items modeling_logs parents_swf_assets pet_types pet_states species \
|
||||||
pet_states species swf_assets users zones \
|
swf_assets users zones \
|
||||||
| \
|
| \
|
||||||
sed 's/ AUTO_INCREMENT=[0-9]*//g' \
|
sed 's/ AUTO_INCREMENT=[0-9]*//g' \
|
||||||
> $(dirname $0)/../schema-for-impress.sql \
|
> $(dirname $0)/../schema-for-impress.sql \
|
||||||
|
|
|
@ -7,7 +7,6 @@ GRANT SELECT ON colors TO impress2020;
|
||||||
GRANT SELECT ON donation_features TO impress2020;
|
GRANT SELECT ON donation_features TO impress2020;
|
||||||
GRANT SELECT ON donations TO impress2020;
|
GRANT SELECT ON donations TO impress2020;
|
||||||
GRANT SELECT ON items TO impress2020;
|
GRANT SELECT ON items TO impress2020;
|
||||||
GRANT SELECT ON item_translations TO impress2020;
|
|
||||||
GRANT SELECT ON modeling_logs TO impress2020;
|
GRANT SELECT ON modeling_logs TO impress2020;
|
||||||
GRANT SELECT ON parents_swf_assets TO impress2020;
|
GRANT SELECT ON parents_swf_assets TO impress2020;
|
||||||
GRANT SELECT ON pet_types TO impress2020;
|
GRANT SELECT ON pet_types TO impress2020;
|
||||||
|
@ -18,7 +17,6 @@ GRANT SELECT ON zones TO impress2020;
|
||||||
|
|
||||||
-- Public data tables: write. Used in modeling and support tools.
|
-- Public data tables: write. Used in modeling and support tools.
|
||||||
GRANT INSERT, UPDATE ON items TO impress2020;
|
GRANT INSERT, UPDATE ON items TO impress2020;
|
||||||
GRANT INSERT, UPDATE ON item_translations TO impress2020;
|
|
||||||
GRANT INSERT, UPDATE, DELETE ON parents_swf_assets TO impress2020;
|
GRANT INSERT, UPDATE, DELETE ON parents_swf_assets TO impress2020;
|
||||||
GRANT INSERT, UPDATE ON pet_types TO impress2020;
|
GRANT INSERT, UPDATE ON pet_types TO impress2020;
|
||||||
GRANT INSERT, UPDATE ON pet_states TO impress2020;
|
GRANT INSERT, UPDATE ON pet_states TO impress2020;
|
||||||
|
|
|
@ -316,15 +316,15 @@ const typeDefs = gql`
|
||||||
|
|
||||||
const resolvers = {
|
const resolvers = {
|
||||||
Item: {
|
Item: {
|
||||||
name: async ({ id, name }, _, { itemTranslationLoader }) => {
|
name: async ({ id, name }, _, { itemLoader }) => {
|
||||||
if (name) return name;
|
if (name) return name;
|
||||||
const translation = await itemTranslationLoader.load(id);
|
const item = await itemLoader.load(id);
|
||||||
return translation.name;
|
return item.name;
|
||||||
},
|
},
|
||||||
description: async ({ id, description }, _, { itemTranslationLoader }) => {
|
description: async ({ id, description }, _, { itemLoader }) => {
|
||||||
if (description) return description;
|
if (description) return description;
|
||||||
const translation = await itemTranslationLoader.load(id);
|
const item = await itemLoader.load(id);
|
||||||
return translation.description;
|
return item.description;
|
||||||
},
|
},
|
||||||
thumbnailUrl: async ({ id, thumbnailUrl }, _, { itemLoader }) => {
|
thumbnailUrl: async ({ id, thumbnailUrl }, _, { itemLoader }) => {
|
||||||
if (thumbnailUrl) return thumbnailUrl;
|
if (thumbnailUrl) return thumbnailUrl;
|
||||||
|
@ -340,15 +340,9 @@ const resolvers = {
|
||||||
const item = await itemLoader.load(id);
|
const item = await itemLoader.load(id);
|
||||||
return isNC(item);
|
return isNC(item);
|
||||||
},
|
},
|
||||||
isPb: async ({ id }, _, { itemTranslationLoader }) => {
|
isPb: async ({ id }, _, { itemLoader }) => {
|
||||||
const translation = await itemTranslationLoader.load(id);
|
const item = await itemLoader.load(id);
|
||||||
if (!translation) {
|
return item.description.includes(
|
||||||
console.warn(
|
|
||||||
`Item.isPb: Translation not found for item ${id}. Returning false.`,
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return translation.description.includes(
|
|
||||||
"This item is part of a deluxe paint brush set!",
|
"This item is part of a deluxe paint brush set!",
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -360,20 +354,14 @@ const resolvers = {
|
||||||
// This feature is deprecated, so now we just always return unknown value.
|
// This feature is deprecated, so now we just always return unknown value.
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
ncTradeValueText: async (
|
ncTradeValueText: async ({ id }, _, { itemLoader }) => {
|
||||||
{ id },
|
|
||||||
_,
|
|
||||||
{ itemLoader, itemTranslationLoader },
|
|
||||||
) => {
|
|
||||||
// Skip this lookup for non-NC items, as a perf optimization.
|
// Skip this lookup for non-NC items, as a perf optimization.
|
||||||
const item = await itemLoader.load(id);
|
const item = await itemLoader.load(id);
|
||||||
if (!isNC(item)) {
|
if (!isNC(item)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the item name, which is how we look things up in ~owls.
|
let itemName = item.name;
|
||||||
const itemTranslation = await itemTranslationLoader.load(id);
|
|
||||||
let itemName = itemTranslation.name;
|
|
||||||
|
|
||||||
// HACK: The name "Butterfly Dress" is used for two different items.
|
// HACK: The name "Butterfly Dress" is used for two different items.
|
||||||
// Here's what ~owls does to distinguish!
|
// Here's what ~owls does to distinguish!
|
||||||
|
|
|
@ -104,7 +104,7 @@ const resolvers = {
|
||||||
setManualSpecialColor: async (
|
setManualSpecialColor: async (
|
||||||
_,
|
_,
|
||||||
{ itemId, colorId, supportSecret },
|
{ itemId, colorId, supportSecret },
|
||||||
{ itemLoader, itemTranslationLoader, colorLoader, db },
|
{ itemLoader, colorLoader, db },
|
||||||
) => {
|
) => {
|
||||||
assertSupportSecretOrThrow(supportSecret);
|
assertSupportSecretOrThrow(supportSecret);
|
||||||
|
|
||||||
|
@ -125,8 +125,7 @@ const resolvers = {
|
||||||
|
|
||||||
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
||||||
try {
|
try {
|
||||||
const [itemTranslation, oldColor, newColor] = await Promise.all([
|
const [oldColor, newColor] = await Promise.all([
|
||||||
itemTranslationLoader.load(itemId),
|
|
||||||
oldItem.manualSpecialColorId
|
oldItem.manualSpecialColorId
|
||||||
? colorLoader.load(oldItem.manualSpecialColorId)
|
? colorLoader.load(oldItem.manualSpecialColorId)
|
||||||
: Promise.resolve(null),
|
: Promise.resolve(null),
|
||||||
|
@ -142,7 +141,7 @@ const resolvers = {
|
||||||
await logToDiscord({
|
await logToDiscord({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `🛠 ${itemTranslation.name}`,
|
title: `🛠 ${oldItem.name}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: oldItem.thumbnailUrl,
|
url: oldItem.thumbnailUrl,
|
||||||
height: 80,
|
height: 80,
|
||||||
|
@ -172,7 +171,7 @@ const resolvers = {
|
||||||
setItemExplicitlyBodySpecific: async (
|
setItemExplicitlyBodySpecific: async (
|
||||||
_,
|
_,
|
||||||
{ itemId, explicitlyBodySpecific, supportSecret },
|
{ itemId, explicitlyBodySpecific, supportSecret },
|
||||||
{ itemLoader, itemTranslationLoader, db },
|
{ itemLoader, db },
|
||||||
) => {
|
) => {
|
||||||
assertSupportSecretOrThrow(supportSecret);
|
assertSupportSecretOrThrow(supportSecret);
|
||||||
|
|
||||||
|
@ -193,7 +192,6 @@ const resolvers = {
|
||||||
|
|
||||||
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
||||||
try {
|
try {
|
||||||
const itemTranslation = await itemTranslationLoader.load(itemId);
|
|
||||||
const oldRuleName = oldItem.explicitlyBodySpecific
|
const oldRuleName = oldItem.explicitlyBodySpecific
|
||||||
? "Body specific"
|
? "Body specific"
|
||||||
: "Auto-detect";
|
: "Auto-detect";
|
||||||
|
@ -203,7 +201,7 @@ const resolvers = {
|
||||||
await logToDiscord({
|
await logToDiscord({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `🛠 ${itemTranslation.name}`,
|
title: `🛠 ${oldItem.name}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: oldItem.thumbnailUrl,
|
url: oldItem.thumbnailUrl,
|
||||||
height: 80,
|
height: 80,
|
||||||
|
@ -233,7 +231,7 @@ const resolvers = {
|
||||||
setItemIsManuallyNc: async (
|
setItemIsManuallyNc: async (
|
||||||
_,
|
_,
|
||||||
{ itemId, isManuallyNc, supportSecret },
|
{ itemId, isManuallyNc, supportSecret },
|
||||||
{ itemLoader, itemTranslationLoader, db },
|
{ itemLoader, db },
|
||||||
) => {
|
) => {
|
||||||
assertSupportSecretOrThrow(supportSecret);
|
assertSupportSecretOrThrow(supportSecret);
|
||||||
|
|
||||||
|
@ -254,7 +252,6 @@ const resolvers = {
|
||||||
|
|
||||||
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
||||||
try {
|
try {
|
||||||
const itemTranslation = await itemTranslationLoader.load(itemId);
|
|
||||||
const oldRuleName = oldItem.isManuallyNc
|
const oldRuleName = oldItem.isManuallyNc
|
||||||
? "Manually set: Yes"
|
? "Manually set: Yes"
|
||||||
: "Auto-detect";
|
: "Auto-detect";
|
||||||
|
@ -264,7 +261,7 @@ const resolvers = {
|
||||||
await logToDiscord({
|
await logToDiscord({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `🛠 ${itemTranslation.name}`,
|
title: `🛠 ${oldItem.name}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: oldItem.thumbnailUrl,
|
url: oldItem.thumbnailUrl,
|
||||||
height: 80,
|
height: 80,
|
||||||
|
@ -294,7 +291,7 @@ const resolvers = {
|
||||||
setLayerBodyId: async (
|
setLayerBodyId: async (
|
||||||
_,
|
_,
|
||||||
{ layerId, bodyId, supportSecret },
|
{ layerId, bodyId, supportSecret },
|
||||||
{ itemLoader, itemTranslationLoader, swfAssetLoader, zoneLoader, db },
|
{ itemLoader, swfAssetLoader, zoneLoader, db },
|
||||||
) => {
|
) => {
|
||||||
assertSupportSecretOrThrow(supportSecret);
|
assertSupportSecretOrThrow(supportSecret);
|
||||||
|
|
||||||
|
@ -338,19 +335,17 @@ const resolvers = {
|
||||||
)
|
)
|
||||||
.then(([rows]) => normalizeRow(rows[0]).parentId);
|
.then(([rows]) => normalizeRow(rows[0]).parentId);
|
||||||
|
|
||||||
const [item, itemTranslation, zone, oldBodyName, newBodyName] =
|
const [item, zone, oldBodyName, newBodyName] = await Promise.all([
|
||||||
await Promise.all([
|
itemLoader.load(itemId),
|
||||||
itemLoader.load(itemId),
|
zoneLoader.load(oldSwfAsset.zoneId),
|
||||||
itemTranslationLoader.load(itemId),
|
loadBodyName(oldSwfAsset.bodyId, db),
|
||||||
zoneLoader.load(oldSwfAsset.zoneId),
|
loadBodyName(bodyId, db),
|
||||||
loadBodyName(oldSwfAsset.bodyId, db),
|
]);
|
||||||
loadBodyName(bodyId, db),
|
|
||||||
]);
|
|
||||||
|
|
||||||
await logToDiscord({
|
await logToDiscord({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `🛠 ${itemTranslation.name}`,
|
title: `🛠 ${item.name}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: item.thumbnailUrl,
|
url: item.thumbnailUrl,
|
||||||
height: 80,
|
height: 80,
|
||||||
|
@ -384,7 +379,6 @@ const resolvers = {
|
||||||
{ layerId, knownGlitches, supportSecret },
|
{ layerId, knownGlitches, supportSecret },
|
||||||
{
|
{
|
||||||
itemLoader,
|
itemLoader,
|
||||||
itemTranslationLoader,
|
|
||||||
swfAssetLoader,
|
swfAssetLoader,
|
||||||
zoneLoader,
|
zoneLoader,
|
||||||
petStateLoader,
|
petStateLoader,
|
||||||
|
@ -439,16 +433,15 @@ const resolvers = {
|
||||||
.then(([rows]) => normalizeRow(rows[0]));
|
.then(([rows]) => normalizeRow(rows[0]));
|
||||||
|
|
||||||
if (parentType === "Item") {
|
if (parentType === "Item") {
|
||||||
const [item, itemTranslation, zone] = await Promise.all([
|
const [item, zone] = await Promise.all([
|
||||||
itemLoader.load(parentId),
|
itemLoader.load(parentId),
|
||||||
itemTranslationLoader.load(parentId),
|
|
||||||
zoneLoader.load(oldSwfAsset.zoneId),
|
zoneLoader.load(oldSwfAsset.zoneId),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await logToDiscord({
|
await logToDiscord({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `🛠 ${itemTranslation.name}`,
|
title: `🛠 ${item.name}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: item.thumbnailUrl,
|
url: item.thumbnailUrl,
|
||||||
height: 80,
|
height: 80,
|
||||||
|
@ -523,7 +516,7 @@ const resolvers = {
|
||||||
bulkAddLayersToItem: async (
|
bulkAddLayersToItem: async (
|
||||||
_,
|
_,
|
||||||
{ itemId, entries, supportSecret },
|
{ itemId, entries, supportSecret },
|
||||||
{ itemLoader, itemTranslationLoader, db },
|
{ itemLoader, db },
|
||||||
) => {
|
) => {
|
||||||
assertSupportSecretOrThrow(supportSecret);
|
assertSupportSecretOrThrow(supportSecret);
|
||||||
|
|
||||||
|
@ -562,12 +555,10 @@ const resolvers = {
|
||||||
|
|
||||||
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
||||||
try {
|
try {
|
||||||
const itemTranslation = await itemTranslationLoader.load(itemId);
|
|
||||||
|
|
||||||
await logToDiscord({
|
await logToDiscord({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `🛠 ${itemTranslation.name}`,
|
title: `🛠 ${item.name}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: item.thumbnailUrl,
|
url: item.thumbnailUrl,
|
||||||
height: 80,
|
height: 80,
|
||||||
|
@ -597,7 +588,7 @@ const resolvers = {
|
||||||
removeLayerFromItem: async (
|
removeLayerFromItem: async (
|
||||||
_,
|
_,
|
||||||
{ layerId, itemId, supportSecret },
|
{ layerId, itemId, supportSecret },
|
||||||
{ itemLoader, itemTranslationLoader, swfAssetLoader, zoneLoader, db },
|
{ itemLoader, swfAssetLoader, zoneLoader, db },
|
||||||
) => {
|
) => {
|
||||||
assertSupportSecretOrThrow(supportSecret);
|
assertSupportSecretOrThrow(supportSecret);
|
||||||
|
|
||||||
|
@ -620,9 +611,8 @@ const resolvers = {
|
||||||
|
|
||||||
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
if (process.env["SUPPORT_TOOLS_DISCORD_WEBHOOK_URL"]) {
|
||||||
try {
|
try {
|
||||||
const [item, itemTranslation, zone, bodyName] = await Promise.all([
|
const [item, zone, bodyName] = await Promise.all([
|
||||||
itemLoader.load(itemId),
|
itemLoader.load(itemId),
|
||||||
itemTranslationLoader.load(itemId),
|
|
||||||
zoneLoader.load(oldSwfAsset.zoneId),
|
zoneLoader.load(oldSwfAsset.zoneId),
|
||||||
loadBodyName(oldSwfAsset.bodyId, db),
|
loadBodyName(oldSwfAsset.bodyId, db),
|
||||||
]);
|
]);
|
||||||
|
@ -630,7 +620,7 @@ const resolvers = {
|
||||||
await logToDiscord({
|
await logToDiscord({
|
||||||
embeds: [
|
embeds: [
|
||||||
{
|
{
|
||||||
title: `🛠 ${itemTranslation.name}`,
|
title: `🛠 ${item.name}`,
|
||||||
thumbnail: {
|
thumbnail: {
|
||||||
url: item.thumbnailUrl,
|
url: item.thumbnailUrl,
|
||||||
height: 80,
|
height: 80,
|
||||||
|
|
Loading…
Reference in a new issue