Refreshing entity slug cache in seeds. Added Hardwerk to Radical.
This commit is contained in:
@@ -2,6 +2,14 @@
|
||||
const omit = require('object.omit');
|
||||
|
||||
const upsert = require('../src/utils/upsert');
|
||||
const redis = require('../src/redis');
|
||||
|
||||
const entityPrefixes = {
|
||||
channel: '',
|
||||
network: '_',
|
||||
studio: '*',
|
||||
info: '@',
|
||||
};
|
||||
|
||||
const grandParentNetworks = [
|
||||
{
|
||||
@@ -905,80 +913,88 @@ const networks = [
|
||||
},
|
||||
];
|
||||
|
||||
exports.seed = (knex) => Promise.resolve()
|
||||
.then(async () => {
|
||||
await Promise.all([].concat(grandParentNetworks, parentNetworks, networks).map(async (network) => {
|
||||
if (network.rename) {
|
||||
return knex('entities')
|
||||
.where({
|
||||
type: network.type || 'network',
|
||||
slug: network.rename,
|
||||
})
|
||||
.update('slug', network.slug);
|
||||
}
|
||||
exports.seed = async (knex) => {
|
||||
await Promise.all([].concat(grandParentNetworks, parentNetworks, networks).map(async (network) => {
|
||||
if (network.rename) {
|
||||
return knex('entities')
|
||||
.where({
|
||||
type: network.type || 'network',
|
||||
slug: network.rename,
|
||||
})
|
||||
.update('slug', network.slug);
|
||||
}
|
||||
|
||||
return null;
|
||||
}).filter(Boolean));
|
||||
return null;
|
||||
}).filter(Boolean));
|
||||
|
||||
const grandParentNetworkEntries = await upsert('entities', grandParentNetworks.map((network) => (omit({ ...network, type: 'network' }, 'rename'))), ['slug', 'type'], knex);
|
||||
const grandParentNetworksBySlug = [].concat(grandParentNetworkEntries.inserted, grandParentNetworkEntries.updated).reduce((acc, network) => ({ ...acc, [network.slug]: network.id }), {});
|
||||
const grandParentNetworkEntries = await upsert('entities', grandParentNetworks.map((network) => (omit({ ...network, type: 'network' }, 'rename'))), ['slug', 'type'], knex);
|
||||
const grandParentNetworksBySlug = [].concat(grandParentNetworkEntries.inserted, grandParentNetworkEntries.updated).reduce((acc, network) => ({ ...acc, [network.slug]: network.id }), {});
|
||||
|
||||
const parentNetworksWithGrandParent = parentNetworks.map((network) => ({
|
||||
slug: network.slug,
|
||||
name: network.name,
|
||||
type: network.type || 'network',
|
||||
alias: network.alias,
|
||||
url: network.url,
|
||||
description: network.description,
|
||||
has_logo: network.hasLogo ?? true,
|
||||
showcased: typeof network.showcased === 'boolean' ? network.showcased : true,
|
||||
parameters: network.parameters || null,
|
||||
options: network.options,
|
||||
parent_id: grandParentNetworksBySlug[network.parent] || null,
|
||||
}));
|
||||
const parentNetworksWithGrandParent = parentNetworks.map((network) => ({
|
||||
slug: network.slug,
|
||||
name: network.name,
|
||||
type: network.type || 'network',
|
||||
alias: network.alias,
|
||||
url: network.url,
|
||||
description: network.description,
|
||||
has_logo: network.hasLogo ?? true,
|
||||
showcased: typeof network.showcased === 'boolean' ? network.showcased : true,
|
||||
parameters: network.parameters || null,
|
||||
options: network.options,
|
||||
parent_id: grandParentNetworksBySlug[network.parent] || null,
|
||||
}));
|
||||
|
||||
const parentNetworkEntries = await upsert('entities', parentNetworksWithGrandParent, ['slug', 'type'], knex);
|
||||
const parentNetworksBySlug = [].concat(parentNetworkEntries.inserted, parentNetworkEntries.updated).reduce((acc, network) => ({ ...acc, [network.slug]: network.id }), {});
|
||||
const parentNetworkEntries = await upsert('entities', parentNetworksWithGrandParent, ['slug', 'type'], knex);
|
||||
const parentNetworksBySlug = [].concat(parentNetworkEntries.inserted, parentNetworkEntries.updated).reduce((acc, network) => ({ ...acc, [network.slug]: network.id }), {});
|
||||
|
||||
const networksWithParent = networks.map((network) => ({
|
||||
slug: network.slug,
|
||||
name: network.name,
|
||||
type: network.type || 'network',
|
||||
alias: network.alias,
|
||||
url: network.url,
|
||||
description: network.description,
|
||||
has_logo: network.hasLogo ?? true,
|
||||
showcased: typeof network.showcased === 'boolean' ? network.showcased : true,
|
||||
parameters: network.parameters || null,
|
||||
options: network.options,
|
||||
parent_id: parentNetworksBySlug[network.parent] || grandParentNetworksBySlug[network.parent] || null,
|
||||
}));
|
||||
const networksWithParent = networks.map((network) => ({
|
||||
slug: network.slug,
|
||||
name: network.name,
|
||||
type: network.type || 'network',
|
||||
alias: network.alias,
|
||||
url: network.url,
|
||||
description: network.description,
|
||||
has_logo: network.hasLogo ?? true,
|
||||
showcased: typeof network.showcased === 'boolean' ? network.showcased : true,
|
||||
parameters: network.parameters || null,
|
||||
options: network.options,
|
||||
parent_id: parentNetworksBySlug[network.parent] || grandParentNetworksBySlug[network.parent] || null,
|
||||
}));
|
||||
|
||||
const networkEntries = await upsert('entities', networksWithParent, ['slug', 'type'], knex);
|
||||
const networkEntries = await upsert('entities', networksWithParent, ['slug', 'type'], knex);
|
||||
|
||||
const networkIdsBySlug = [].concat(
|
||||
grandParentNetworkEntries.inserted,
|
||||
grandParentNetworkEntries.updated,
|
||||
parentNetworkEntries.inserted,
|
||||
parentNetworkEntries.updated,
|
||||
networkEntries.inserted,
|
||||
networkEntries.updated,
|
||||
).reduce((acc, network) => ({ ...acc, [network.slug]: network.id }), {});
|
||||
const networkIdsBySlug = [].concat(
|
||||
grandParentNetworkEntries.inserted,
|
||||
grandParentNetworkEntries.updated,
|
||||
parentNetworkEntries.inserted,
|
||||
parentNetworkEntries.updated,
|
||||
networkEntries.inserted,
|
||||
networkEntries.updated,
|
||||
).reduce((acc, network) => ({ ...acc, [network.slug]: network.id }), {});
|
||||
|
||||
const tagSlugs = networks.map((network) => network.tags).flat().filter(Boolean);
|
||||
const tagSlugs = networks.map((network) => network.tags).flat().filter(Boolean);
|
||||
|
||||
const tagEntries = await knex('tags').whereIn('slug', tagSlugs);
|
||||
const tagIdsBySlug = tagEntries.reduce((acc, tag) => ({ ...acc, [tag.slug]: tag.id }), {});
|
||||
const tagEntries = await knex('tags').whereIn('slug', tagSlugs);
|
||||
const tagIdsBySlug = tagEntries.reduce((acc, tag) => ({ ...acc, [tag.slug]: tag.id }), {});
|
||||
|
||||
const tagAssociations = networks
|
||||
.map((network) => (network.tags
|
||||
? network.tags.map((tagSlug) => ({
|
||||
entity_id: networkIdsBySlug[network.slug],
|
||||
tag_id: tagIdsBySlug[tagSlug],
|
||||
inherit: true,
|
||||
}))
|
||||
: []))
|
||||
.flat();
|
||||
const tagAssociations = networks
|
||||
.map((network) => (network.tags
|
||||
? network.tags.map((tagSlug) => ({
|
||||
entity_id: networkIdsBySlug[network.slug],
|
||||
tag_id: tagIdsBySlug[tagSlug],
|
||||
inherit: true,
|
||||
}))
|
||||
: []))
|
||||
.flat();
|
||||
|
||||
await upsert('entities_tags', tagAssociations, ['entity_id', 'tag_id'], knex);
|
||||
});
|
||||
await upsert('entities_tags', tagAssociations, ['entity_id', 'tag_id'], knex);
|
||||
|
||||
const entities = await knex('entities').select('id', 'slug', 'type');
|
||||
|
||||
await redis.connect();
|
||||
|
||||
await redis.del('traxxx:entities:id_by_slug');
|
||||
await redis.hSet('traxxx:entities:id_by_slug', entities.map((entity) => [`${entityPrefixes[entity.type]}${entity.slug}`, entity.id]));
|
||||
|
||||
await redis.disconnect();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user