Per Service Schemas: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
(Created page with "= Overview = Each service manages a schema of object/resources that it is responsible for, this schema is available to other services and frontends. The schema includes a list of fields available for each object. = Example Per Service Object List = <syntaxhighlight lang="json"> { serviceTag: "xx", objectTypes: [ "xxx", "yyy", // ... ] }, </syntaxhighlight> = Example Object Schema = <syntaxhighlight lang="json"> { objectType: "xx", canUpdate: true, // whet...")
 
No edit summary
Line 58: Line 58:
== Tabled Data ==
== Tabled Data ==


When viewing tabled data the frontend pulls the tableId's config from backend, then when requesting the data also requests the serviceTag > objectType schema for use when displaying the data
When viewing tabled data the frontend pulls the tableId's config from backend, then when requesting the data also requests the serviceTag > objectType schema for use when displaying the data.
 
== Code Standardization ==
 
Code such as middleware validation schema and saving data to databases can be standardized.
 
== Code Generation ==
 
Endpoints per object for actions such as create/delete/update could be automatically generated from objectSchema.

Revision as of 22:58, 19 March 2023

Overview

Each service manages a schema of object/resources that it is responsible for, this schema is available to other services and frontends. The schema includes a list of fields available for each object.

Example Per Service Object List

{
	serviceTag: "xx",
	objectTypes: [
		"xxx",
		"yyy",
		// ...
	]
},

Example Object Schema

{
	objectType: "xx",
	canUpdate: true, // whether any fields can be updated
	fieldnames: {
		xxx: { // fieldname
			type: "xx", // string|integer|currency|float|special|..
			requiredOnCreate: true,
			canUpdate: true,
			validation: {}, // maybe ajv syntax
		},
		// ...
	}
},

Use Cases

Standard Create, Update, List, Delete pages

  • List and Delete are maybe not required, use table data system instead.
  • object schema can add validation information that can be used on the frontend to check before sending to backend, and by the backend to validate the data before handling

Create Object

  • can configure what fields are shown
  • requiredOnCreate fields must be shown

Edit Object

  • users setup any number of pages for object types with configurable fields shown
  • fields can be either display only or edit
  • each field can adjust it's display properties (perhaps via cssStyles)

Menu Config

When adding menu items can add links to create, update, list, delete objects, user chooses the service then from that service's list of objects and what action is being performed. For update/delete perhaps links to a standard page that asks for the identifier before presenting the page.

Tabled Data

When viewing tabled data the frontend pulls the tableId's config from backend, then when requesting the data also requests the serviceTag > objectType schema for use when displaying the data.

Code Standardization

Code such as middleware validation schema and saving data to databases can be standardized.

Code Generation

Endpoints per object for actions such as create/delete/update could be automatically generated from objectSchema.