@wishcbg/bobcode
Version:
基於店家同步功能的需求,讓店家能夠在不同的店家之間同步各項功能設定,並且能夠檢視各項功能的異動情況。 規劃出一套店家設定即程式碼的機制,讓店家能夠以 config file (.sac) 來定義各項功能設定,並且能夠還原店家各項功能設定。 暫且稱這個機制為「Settings as Code」「店家設定即程式碼」。
54 lines (53 loc) • 1.25 kB
TypeScript
import type { AnyZodObject } from 'zod';
/** 單一資源物件 */
export interface Resource {
resourceType: string;
logicId: string;
description: string;
setting: any;
}
/** 讀取的 config 檔結構 */
export interface ConfigFile {
version: string;
logicIdPrefix: string;
resources: Resource[];
}
/** 單一欄位差異 */
export interface Diff {
key: string;
desc: string;
old: any;
new: any;
}
/** 單一變更項目 */
export interface Change {
resourceType: string;
operation: 'create' | 'update' | 'delete';
logicId: string;
description: string;
diffs: Diff[];
payload: object | null;
}
/** 整個變更集 */
export interface ChangeSet {
version: string;
scopePrefix: string;
changes: Change[];
}
/** 單一變更執行結果 */
export interface ChangeResult extends Omit<Change, 'payload'> {
status: 'success' | 'failed';
errorMessage?: string | null;
errorCode?: string | null;
payload?: Change['payload'];
}
/** 整個變更執行結果 */
export interface ChangeLog {
version: string;
scopePrefix: string;
changes: ChangeResult[];
}
export type ZodSchemaActions = {
createSchema: AnyZodObject;
updateSchema: AnyZodObject;
};