Skip to content

Instantly share code, notes, and snippets.

@gregberge
Created February 3, 2022 10:21
Show Gist options
  • Save gregberge/d6b12fe4ecb5324559a4611b74badd74 to your computer and use it in GitHub Desktop.
Save gregberge/d6b12fe4ecb5324559a4611b74badd74 to your computer and use it in GitHub Desktop.
const program = require("commander");
const { withSpinner } = require("./util");
const newsIndexer = require("../server/services/news/indexer");
const imagesIndexer = require("../server/services/images/indexer");
const articlesIndexer = require("../server/services/articles/indexer");
const liveInputsIndexer = require("../server/services/live-inputs/indexer");
const snippetsIndexer = require("../server/services/snippets/indexer");
const postsIndexer = require("../server/services/posts/indexer");
function getIndexers(type = null) {
switch (type) {
case "article":
return [articlesIndexer];
case "image":
return [imagesIndexer];
case "news":
return [newsIndexer];
case "live-input":
return [liveInputsIndexer];
case "snippet":
return [snippetsIndexer];
case "post":
return [postsIndexer];
default:
return [
articlesIndexer,
imagesIndexer,
newsIndexer,
liveInputsIndexer,
snippetsIndexer,
postsIndexer,
];
}
}
program
.description("index resources in elastic search")
.option(
"--type <type>",
"resource type (article, image, news, live-input, snippet)"
)
.action(async () => {
const indexers = getIndexers(program.opts().type);
const action = withSpinner(
async () => {
const params = { where: { createdAt: { gte: "2022-02-01T10:21:08.762Z" } } };
await Promise.all(indexers.map((indexer) => indexer.syncIndex(params)));
},
{
progress: () =>
`Indexing ${indexers
.map((indexer) => indexer.model.name.toLowerCase())
.join(", ")}"...`,
success: () => `Indexing completed`,
}
);
await action();
process.exit(0);
});
program.showHelpAfterError().parse(process.argv);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment