dashersupply/src/data/core/client.ts

41 lines
1.6 KiB
TypeScript

import { config } from "../../config.js";
import { 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";
export const client = new SquidexClient({
appName: config.squidexAppName!,
clientId: config.squidexClientId!,
clientSecret: config.squidexClientSecret!,
environment: config.squidexEnvironment!,
tokenStore: new SquidexClient.InMemoryTokenStore(),
// tokenStore: new SquidexStorageTokenStore() // Keep the tokens in the local store.
// tokenStore: new SquidexStorageTokenStore(sessionStorage, "CustomKey")
});
export const TIMEOUT_IN_SECONDS = 10;
/** Asset Handling */
export const getAssetById = async (assetId: string) => (
await client.assets.getAsset({ id: assetId })
);
/** Generic Content Handling */
export const getAllContents = async <T>(schema: SCHEMAS|string) => (
await client.contents.getContents({ schema })
) as ContentsDto<T>;
export const getContentsByIds = async <T>(schema: SCHEMAS|string, ids: string) => (
await client.contents.getContents({ schema, ids })
) as ContentsDto<T>;
export const getContentsUsingJsonQuery = async <T>(schema: SCHEMAS|string, jsonQuery: string|undefined = undefined) => (
await client.contents.getContents({ schema, q: jsonQuery })
) as ContentsDto<T>;
export const getContentsByLangSlug = async <T>(schema: SCHEMAS|string, forLang: SupportedLocales|string, slug: string) => (
await getContentsUsingJsonQuery<T>(schema, JSON.stringify({ filter: { path: `data.slug.${forLang}`, op: 'eq', value: slug }}))
);