import { object } from "./utils" import Resource from "./utils/Resource" const view = { name: "peopleView", tableId: "ta_896a325f7e8147d2a2cda93c5d236511", schema: { name: { visible: true, readonly: false, order: 1, width: 300, }, age: { visible: true, readonly: true, order: 2, width: 200, }, salary: { visible: false, readonly: false, }, }, primaryDisplay: "name", } const baseColumnDef = { visible: { type: "boolean", description: "Defines whether the column is visible or not - rows retrieved/updated through this view will not be able to access it.", }, readonly: { type: "boolean", description: "When used in combination with 'visible: true' the column will be visible in row responses but cannot be updated.", }, order: { type: "integer", description: "A number defining where the column shows up in tables, lowest being first.", }, width: { type: "integer", description: "A width for the column, defined in pixels - this affects rendering in tables.", }, } const viewSchema = { description: "The view to be created/updated.", type: "object", required: ["name", "schema"], properties: { name: { description: "The name of the view.", type: "string", }, primaryDisplay: { type: "string", description: "A column used to display rows from this view - usually used when rendered in tables.", }, schema: { type: "object", additionalProperties: { type: "object", properties: baseColumnDef, }, }, }, } const viewOutputSchema = { ...viewSchema, properties: { ...viewSchema.properties, id: { description: "The ID of the view.", type: "string", }, }, required: [...viewSchema.required, "id"], } export default new Resource() .setExamples({ view: { value: { data: view, }, }, views: { value: { data: [view], }, }, }) .setSchemas({ view: viewSchema, viewOutput: object({ data: viewOutputSchema, }), viewSearch: object({ data: { type: "array", items: viewOutputSchema, }, }), })