@wishcbg/bobcode
Version:
基於店家同步功能的需求,讓店家能夠在不同的店家之間同步各項功能設定,並且能夠檢視各項功能的異動情況。 規劃出一套店家設定即程式碼的機制,讓店家能夠以 config file (.sac) 來定義各項功能設定,並且能夠還原店家各項功能設定。 暫且稱這個機制為「Settings as Code」「店家設定即程式碼」。
41 lines (40 loc) • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CustomCardTemplateResourceSchema = exports.customCardTemplateResourceSettingSchema = void 0;
const zod_1 = require("zod");
// enums 參考 config
const memberCardStyles = ['classic', 'peaceful', 'lively', 'nature', 'fresh', 'simple', 'custom'];
const cardSettingSchema = zod_1.z.object({
level: zod_1.z.number().int().min(1).max(6).describe('會員等級'),
style: zod_1.z.enum(memberCardStyles).describe('樣式'),
customImageId: zod_1.z.string().uuid().optional().describe('自訂圖片ID'),
});
exports.customCardTemplateResourceSettingSchema = zod_1.z.object({
name: zod_1.z.string().describe('卡面樣板名稱'),
cardSettings: zod_1.z.array(cardSettingSchema).describe('卡面樣板設定'),
}).describe('會員卡面設定');
// 改成export一個 config 而不是class
exports.CustomCardTemplateResourceSchema = {
// —— 基本欄位
resourceType: 'customCardTemplate',
resourceName: '會員卡面設定',
resourceSettingSchema: exports.customCardTemplateResourceSettingSchema,
// —— 關聯
relationScope: 'shop',
relationType: 'multi',
relationResources: [
{
resourceType: 'image',
settingSchemaField: 'cardSettings[*].customImageId',
logicIdToResourceIdNewField: 'cardSettings[*].customImageIdtest',
useLogicIdToResourceId: false,
relationType: 'single',
acceptsNullValue: true,
},
],
// —— apply API path
applySingleUpdateApiPath: null,
applyCreateApiPath: '/:shopId/customCardTemplate',
applyUpdateApiPath: '/:shopId/customCardTemplate/:resourceId',
applyDestroyApiPath: '/:shopId/customCardTemplate/:resourceId',
};