chore(index): index dml (#10482)

What:
- DML - `autoincrement` property
- Index `type` option (GIN)
- Index module - DML
This commit is contained in:
Carlos R. L. Rodrigues
2024-12-10 07:55:12 -03:00
committed by GitHub
parent 096f1c2a9b
commit 69f4c4f4e0
17 changed files with 482 additions and 215 deletions

View File

@@ -1,5 +1,7 @@
{
"namespaces": ["public"],
"namespaces": [
"public"
],
"name": "public",
"tables": [
{
@@ -31,36 +33,81 @@
"nullable": false,
"default": "'{}'",
"mappedType": "json"
},
"created_at": {
"name": "created_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 6,
"default": "now()",
"mappedType": "datetime"
},
"updated_at": {
"name": "updated_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 6,
"default": "now()",
"mappedType": "datetime"
},
"deleted_at": {
"name": "deleted_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": true,
"length": 6,
"mappedType": "datetime"
}
},
"name": "index_data",
"schema": "public",
"indexes": [
{
"columnNames": ["id"],
"composite": false,
"keyName": "IDX_index_data_id",
"primary": false,
"unique": false
},
{
"columnNames": ["name"],
"composite": false,
"keyName": "IDX_index_data_name",
"primary": false,
"unique": false
},
{
"keyName": "IDX_index_data_gin",
"columnNames": ["data"],
"keyName": "IDX_index_data_deleted_at",
"columnNames": [],
"composite": false,
"primary": false,
"unique": false,
"type": "GIN"
"expression": "CREATE INDEX IF NOT EXISTS \"IDX_index_data_deleted_at\" ON \"index_data\" (deleted_at) WHERE deleted_at IS NULL"
},
{
"keyName": "IDX_index_data_gin",
"columnNames": [],
"composite": false,
"primary": false,
"unique": false,
"expression": "CREATE INDEX IF NOT EXISTS \"IDX_index_data_gin\" ON \"index_data\" USING GIN (data) WHERE deleted_at IS NULL"
},
{
"keyName": "IDX_index_data_id",
"columnNames": [],
"composite": false,
"primary": false,
"unique": false,
"expression": "CREATE INDEX IF NOT EXISTS \"IDX_index_data_id\" ON \"index_data\" (id) WHERE deleted_at IS NULL"
},
{
"keyName": "IDX_index_data_name",
"columnNames": [],
"composite": false,
"primary": false,
"unique": false,
"expression": "CREATE INDEX IF NOT EXISTS \"IDX_index_data_name\" ON \"index_data\" (name) WHERE deleted_at IS NULL"
},
{
"keyName": "index_data_pkey",
"columnNames": ["id", "name"],
"columnNames": [
"id",
"name"
],
"composite": true,
"primary": true,
"unique": true
@@ -73,12 +120,12 @@
"columns": {
"id": {
"name": "id",
"type": "text",
"type": "number",
"unsigned": true,
"autoincrement": true,
"primary": false,
"primary": true,
"nullable": false,
"mappedType": "text"
"mappedType": "integer"
},
"pivot": {
"name": "pivot",
@@ -89,15 +136,6 @@
"nullable": false,
"mappedType": "text"
},
"parent_id": {
"name": "parent_id",
"type": "text",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"mappedType": "text"
},
"parent_name": {
"name": "parent_name",
"type": "text",
@@ -107,6 +145,24 @@
"nullable": false,
"mappedType": "text"
},
"child_name": {
"name": "child_name",
"type": "text",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"mappedType": "text"
},
"parent_id": {
"name": "parent_id",
"type": "text",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"mappedType": "text"
},
"child_id": {
"name": "child_id",
"type": "text",
@@ -116,30 +172,72 @@
"nullable": false,
"mappedType": "text"
},
"child_name": {
"name": "child_name",
"type": "text",
"created_at": {
"name": "created_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"mappedType": "text"
"length": 6,
"default": "now()",
"mappedType": "datetime"
},
"updated_at": {
"name": "updated_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 6,
"default": "now()",
"mappedType": "datetime"
},
"deleted_at": {
"name": "deleted_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": true,
"length": 6,
"mappedType": "datetime"
}
},
"name": "index_relation",
"schema": "public",
"indexes": [
{
"keyName": "IDX_index_relation_child_id",
"columnNames": ["child_id"],
"keyName": "IDX_index_relation_parent_id",
"columnNames": [],
"composite": false,
"primary": false,
"unique": false
"unique": false,
"expression": "CREATE INDEX IF NOT EXISTS \"IDX_index_relation_parent_id\" ON \"index_relation\" (parent_id) WHERE deleted_at IS NULL"
},
{
"keyName": "IDX_index_relation_child_id",
"columnNames": [],
"composite": false,
"primary": false,
"unique": false,
"expression": "CREATE INDEX IF NOT EXISTS \"IDX_index_relation_child_id\" ON \"index_relation\" (child_id) WHERE deleted_at IS NULL"
},
{
"keyName": "IDX_index_relation_deleted_at",
"columnNames": [],
"composite": false,
"primary": false,
"unique": false,
"expression": "CREATE INDEX IF NOT EXISTS \"IDX_index_relation_deleted_at\" ON \"index_relation\" (deleted_at) WHERE deleted_at IS NULL"
},
{
"keyName": "index_relation_pkey",
"columnNames": ["id", "pivot"],
"composite": true,
"columnNames": [
"id"
],
"composite": false,
"primary": true,
"unique": true
}

View File

@@ -0,0 +1,35 @@
import { Migration } from "@mikro-orm/migrations"
export class Migration20241209173313 extends Migration {
async up(): Promise<void> {
this.addSql(`
ALTER TABLE "index_data"
ADD COLUMN IF NOT EXISTS "created_at" timestamptz NOT NULL DEFAULT now(),
ADD COLUMN IF NOT EXISTS "updated_at" timestamptz NOT NULL DEFAULT now(),
ADD COLUMN IF NOT EXISTS "deleted_at" timestamptz NULL;
`)
this.addSql(`
ALTER TABLE "index_relation"
ADD COLUMN IF NOT EXISTS "created_at" timestamptz NOT NULL DEFAULT now(),
ADD COLUMN IF NOT EXISTS "updated_at" timestamptz NOT NULL DEFAULT now(),
ADD COLUMN IF NOT EXISTS "deleted_at" timestamptz NULL;
`)
}
async down(): Promise<void> {
this.addSql(`
ALTER TABLE "index_data"
DROP COLUMN IF EXISTS "created_at",
DROP COLUMN IF EXISTS "updated_at",
DROP COLUMN IF EXISTS "deleted_at";
`)
this.addSql(`
ALTER TABLE "index_relation"
DROP COLUMN IF EXISTS "created_at",
DROP COLUMN IF EXISTS "updated_at",
DROP COLUMN IF EXISTS "deleted_at";
`)
}
}