diff --git a/src/apps/catalog/amazon/amazon.ts b/src/apps/catalog/amazon/amazon.ts index 6cfdbb9..38a2727 100644 --- a/src/apps/catalog/amazon/amazon.ts +++ b/src/apps/catalog/amazon/amazon.ts @@ -2,7 +2,7 @@ import type { Command } from "commander"; import { amazonAppendImagesCommand } from "./amazon-append-images"; import { amazonCrawleeProductsCommand } from "./amazon-crawlee-products"; import { amazonProcureASINsCommand } from "./amazon-procure-asins"; -import { amazonGetItemsCommand } from "./get-items/get-items"; +import { amazonGetItemsCommand } from "./get-items/amazon-get-items"; const COMMAND_NAME = 'amazon'; diff --git a/src/apps/catalog/amazon/get-items/amazon-get-items-fetch.ts b/src/apps/catalog/amazon/get-items/amazon-get-items-fetch.ts new file mode 100644 index 0000000..f10e145 --- /dev/null +++ b/src/apps/catalog/amazon/get-items/amazon-get-items-fetch.ts @@ -0,0 +1,26 @@ +import type { Command } from "commander"; +import * as core from '../../../../data/core/client' +import { getProductsUsingJsonQuery } from "../../../../data/api-client"; +import type { AmazonMarketplaceConnection } from "../../../../data/models/components/AmazonMarketplaceConnection"; +import { logForCommand } from "../../common/console"; +import { SCHEMAS } from "../../../../data/models/schemas"; +import type { AmazonGetItem } from "../../../../data/models/multis/AmazonGetItem"; +import { DateTime } from "luxon"; + +export const COMMAND_NAME = 'fetch'; + +export const amazonGetItemsFetchCommand = (commandName: string, amazonGetItemsCommand: Command) => { + const log = logForCommand(commandName); + const command = amazonGetItemsCommand.command(commandName).alias('get') + .description('List all the get-items logs') + .action(async (args: string[]) => { + let logsDto = await core.getContentsUsingJsonQuery(SCHEMAS.AMAZON_GET_ITEMS); + logsDto.items.forEach((logDto, index) => { + const logEach = logForCommand(`${commandName}:${index+1}`); + logEach(`ID: ${logDto.id} Request Date: ${DateTime.fromISO(logDto.data?.requestDate.iv!).toLocaleString(DateTime.DATETIME_SHORT_WITH_SECONDS)}`) + }); + log(`Returned ${logsDto.items.length} get-items logs.`) + }); + command.configureHelp(); + return command; +} \ No newline at end of file diff --git a/src/apps/catalog/amazon/get-items/amazon-get-items-logs.ts b/src/apps/catalog/amazon/get-items/amazon-get-items-logs.ts index 1f6b864..c9e651f 100644 --- a/src/apps/catalog/amazon/get-items/amazon-get-items-logs.ts +++ b/src/apps/catalog/amazon/get-items/amazon-get-items-logs.ts @@ -9,10 +9,9 @@ import { DateTime } from "luxon"; export const COMMAND_NAME = 'logs'; -const log = console.log; - -export const amazonGetItemsLogsCommand = (amazonGetItemsCommand: Command) => { - const command = amazonGetItemsCommand.command(COMMAND_NAME).alias('log') +export const amazonGetItemsLogsCommand = (commandName: string, amazonGetItemsCommand: Command) => { + const log = console.log; + const command = amazonGetItemsCommand.command(commandName).alias('log') .description('Prints the get-items JSON response') .argument('') .action(async (logIds: string[]) => { diff --git a/src/apps/catalog/amazon/get-items/amazon-get-items-ls.ts b/src/apps/catalog/amazon/get-items/amazon-get-items-ls.ts index ba30020..237bdd7 100644 --- a/src/apps/catalog/amazon/get-items/amazon-get-items-ls.ts +++ b/src/apps/catalog/amazon/get-items/amazon-get-items-ls.ts @@ -9,15 +9,16 @@ import { DateTime } from "luxon"; export const COMMAND_NAME = 'ls'; -const log = logForCommand(COMMAND_NAME); - -export const amazonGetItemsLsCommand = (amazonGetItemsCommand: Command) => { - const command = amazonGetItemsCommand.command(COMMAND_NAME).alias('list') - .description('List all the get-items logs') - .action(async (args: string[]) => { +export const amazonGetItemsLsCommand = (commandName: string, amazonGetItemsCommand: Command) => { + const log = logForCommand(commandName); + const command = amazonGetItemsCommand.command(commandName).alias('list') + .description('Fetch Amazon Items by inputting one or more ASINs separated by spaces.') + .argument('', 'Amazon Standard Identification Numbers') + .description('Begin automated product procurement from Amazon by inputting one or more ASINs separated by spaces.') + .action(async (args: string[]) => { let logsDto = await core.getContentsUsingJsonQuery(SCHEMAS.AMAZON_GET_ITEMS); logsDto.items.forEach((logDto, index) => { - const logEach = logForCommand(`${COMMAND_NAME}:${index+1}`); + const logEach = logForCommand(`${commandName}:${index+1}`); logEach(`ID: ${logDto.id} Request Date: ${DateTime.fromISO(logDto.data?.requestDate.iv!).toLocaleString(DateTime.DATETIME_SHORT_WITH_SECONDS)}`) }); log(`Returned ${logsDto.items.length} get-items logs.`) diff --git a/src/apps/catalog/amazon/get-items/amazon-get-items.ts b/src/apps/catalog/amazon/get-items/amazon-get-items.ts new file mode 100644 index 0000000..bf659fd --- /dev/null +++ b/src/apps/catalog/amazon/get-items/amazon-get-items.ts @@ -0,0 +1,14 @@ +import type { Command } from "commander"; +import * as fetch from "./amazon-get-items-fetch"; +import * as ls from "./amazon-get-items-ls"; +import * as logs from "./amazon-get-items-logs"; + +const COMMAND_NAME = 'get-items'; + +export const amazonGetItemsCommand = (program: Command) => { + const amazonGetItemsCommand = program.command(COMMAND_NAME).alias('get-item').description('Amazon Get Items commands'); + fetch.amazonGetItemsFetchCommand(fetch.COMMAND_NAME, amazonGetItemsCommand); + ls.amazonGetItemsLsCommand(ls.COMMAND_NAME, amazonGetItemsCommand); + logs.amazonGetItemsLogsCommand(logs.COMMAND_NAME, amazonGetItemsCommand); + return amazonGetItemsCommand; +} \ No newline at end of file diff --git a/src/apps/catalog/amazon/get-items/get-items.ts b/src/apps/catalog/amazon/get-items/get-items.ts deleted file mode 100644 index d5ecece..0000000 --- a/src/apps/catalog/amazon/get-items/get-items.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { Command } from "commander"; -import { amazonGetItemsLsCommand } from "./amazon-get-items-ls"; -import { amazonGetItemsLogsCommand } from "./amazon-get-items-logs"; - -const COMMAND_NAME = 'get-items'; - -export const amazonGetItemsCommand = (program: Command) => { - const amazonGetItemsCommand = program.command(COMMAND_NAME).alias('get-item').description('Amazon Get Items commands'); - amazonGetItemsLsCommand(amazonGetItemsCommand); - amazonGetItemsLogsCommand(amazonGetItemsCommand); - return amazonGetItemsCommand; -} \ No newline at end of file diff --git a/src/data/core/client.ts b/src/data/core/client.ts index b0d2856..2883285 100644 --- a/src/data/core/client.ts +++ b/src/data/core/client.ts @@ -1,8 +1,9 @@ import { config } from "../../config.js"; -import { SquidexClient } from "@squidex/squidex"; +import { Squidex, SquidexClient } from "@squidex/squidex"; import type { ContentsDto } from "../internals/ContentsDtoT.js"; import type { SupportedLocales } from "../internals/LocalizedT.js"; import type { SCHEMAS } from "../models/schemas.js"; +import type { Contents } from "@squidex/squidex/api/resources/contents/client/Client.js"; export const client = new SquidexClient({ appName: config.squidexAppName!, diff --git a/src/data/models/multis/Page.ts b/src/data/models/multis/Page.ts index 127dd39..0b1e450 100644 --- a/src/data/models/multis/Page.ts +++ b/src/data/models/multis/Page.ts @@ -2,6 +2,9 @@ import type { PageSeo } from "../components/PageSeo"; import type { Localized } from "../../internals/LocalizedT"; import type { NonLocalized } from "../../internals/NonLocalizedT"; import type { Component } from "../../internals/Component"; +import type { ContentDto } from "../../internals/ContentDtoT"; +import type { ContentsDto } from "../../internals/ContentsDtoT"; +import type { SCHEMAS } from "../schemas"; export interface Page { title: Localized, @@ -9,4 +12,10 @@ export interface Page { content: Localized, seo: Localized, parentPage: NonLocalized, -} \ No newline at end of file +} + +export interface PageDto extends ContentDto { + schemaName: SCHEMAS.PAGES, +} + +export type PagesDto = ContentsDto; \ No newline at end of file