Files
blog/src_generic/config.ts

70 lines
2.0 KiB
TypeScript

import { AppConfig, ResourceConfig } from "./types/config";
const AccountResource: ResourceConfig = {
name: "accounts",
label: "Account",
pluralLabel: "Accounts",
endpoint: "/accounts",
primaryKey: "id",
fields: {
id: { type: "string", label: "ID", readOnly: true },
name: { type: "string", label: "Name", required: true },
type: {
type: "enum",
label: "Type",
required: true,
options: ["cash", "bank", "credit_card", "wallet", "other"],
},
currency: { type: "string", label: "Currency", required: true },
is_active: { type: "boolean", label: "Active" },
},
};
const TagResource: ResourceConfig = {
name: "tags",
label: "Tag",
pluralLabel: "Tags",
endpoint: "/tags",
primaryKey: "id",
fields: {
id: { type: "string", label: "ID", readOnly: true },
name: { type: "string", label: "Name", required: true },
parent_id: { type: "string", label: "Parent ID" },
},
};
const ExpenseResource: ResourceConfig = {
name: "expenses",
label: "Expense",
pluralLabel: "Expenses",
endpoint: "/expenses",
primaryKey: "id",
fields: {
id: { type: "string", label: "ID", readOnly: true },
amount: { type: "number", label: "Amount", required: true },
occurred_at: { type: "date", label: "Occurred At", required: true },
payee: {
type: "object",
label: "Payee",
required: true,
schema: {
name: { type: "string", label: "Name", required: true },
type: {
type: "enum",
label: "Type",
options: ["merchant", "person", "transfer", "other"],
},
},
},
account: { type: "string", label: "Account ID", required: true },
tags: { type: "array", label: "Tags" },
created_at: { type: "date", label: "Created At", readOnly: true },
},
};
export const config: AppConfig = {
baseUrl: import.meta.env.VITE_API_BASE_URL || "http://localhost:8000",
authBaseUrl: import.meta.env.VITE_AUTH_BASE_URL || "http://localhost:8001",
resources: [ExpenseResource, AccountResource, TagResource],
};