{ "$schema": "https://json-schema.org/schema#", "description": "Abstract description of a mediawiki database table", "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the table" }, "comment": { "type": "string", "description": "Comment describing the table" }, "columns": { "type": "array", "additionalItems": false, "description": "Columns", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Name of the column" }, "comment": { "type": "string", "description": "Comment describing the column" }, "type": { "type": "string", "description": "Data type of the column", "enum": [ "bigint", "binary", "blob", "boolean", "datetimetz", "decimal", "float", "integer", "mwenum", "mwtimestamp", "mwtinyint", "smallint", "string", "text" ] }, "options": { "type": "object", "description": "Additional options", "additionalProperties": false, "properties": { "autoincrement": { "type": "boolean", "description": "Indicates if the field should use an autoincremented value if no value was provided", "default": false }, "default": { "type": [ "number", "string", "null" ], "description": "The default value of the column if no value was specified", "default": null }, "fixed": { "type": "boolean", "description": "Indicates if the column should have a fixed length", "default": false }, "length": { "type": "number", "description": "Length of the field.", "default": null, "minimum": 0 }, "notnull": { "type": "boolean", "description": "Indicates whether the column is nullable or not", "default": true }, "unsigned": { "type": "boolean", "description": "If the column should be an unsigned integer", "default": false }, "scale": { "type": "number", "description": "Exact number of decimal digits to be stored in a decimal type column", "default": 0 }, "precision": { "type": "number", "description": "Precision of a decimal type column that determines the overall maximum number of digits to be stored (including scale)", "default": 10 }, "PlatformOptions": { "type": "object", "additionalProperties": false, "properties": { "version": { "type": "boolean" } } }, "CustomSchemaOptions": { "type": "object", "description": "Custom schema options", "additionalProperties": false, "properties": { "allowInfinite": { "type": "boolean" }, "doublePrecision": { "type": "boolean" }, "enum_values": { "type": "array", "description": "Values to use with type 'mwenum'", "additionalItems": false, "items": { "type": "string" }, "uniqueItems": true } } } } } }, "required": [ "name", "type", "options" ] } }, "indexes": { "type": "array", "additionalItems": false, "description": "Indexes", "items": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string", "description": "Index name" }, "comment": { "type": "string", "description": "Comment describing the index" }, "columns": { "type": "array", "additionalItems": false, "description": "Columns used by the index", "items": { "type": "string" }, "uniqueItems": true }, "unique": { "type": "boolean", "description": "If the index is unique", "default": false }, "flags": { "type": "array", "items": { "type": "string", "enum": [ "fulltext", "spatial" ] }, "uniqueItems": true }, "options": { "type": "object", "properties": { "lengths": { "type": "array", "items": { "type": [ "number", "null" ] }, "minItems": 1 } } } }, "required": [ "name", "columns", "unique" ] } }, "pk": { "type": "array", "additionalItems": false, "description": "Array of column names used in the primary key", "items": { "type": "string" }, "uniqueItems": true }, "table_options": { "type": "array", "items": { "type": "string" } } }, "required": [ "name", "columns", "indexes" ] }