feat(database): 🗃️ switch to postgres as primary storage

master
Xeronith 2023-04-29 00:13:58 +03:30
rodzic 0e22f5bb39
commit 4b77023314
27 zmienionych plików z 750 dodań i 4023 usunięć

Wyświetl plik

@ -1,42 +1,41 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `access_controls`
CREATE TABLE "access_controls_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"key" BIGINT NOT NULL,
"value" BIGINT NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_access_controls_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `access_controls`
CREATE TABLE "access_controls"
(
`id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"key" BIGINT NOT NULL,
"value" BIGINT NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_access_controls" PRIMARY KEY ("id")
);
##########
CREATE INDEX "idx_access_controls_status" ON "access_controls" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "access_controls_after_update"() RETURNS TRIGGER AS $access_controls_after_update$
BEGIN
INSERT INTO "access_controls_history"("action", "original_id", "key", "value", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."key", "OLD"."value", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$access_controls_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `access_controls_after_update`
AFTER UPDATE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "access_controls_after_update_trigger" AFTER UPDATE ON "access_controls"
FOR EACH ROW EXECUTE FUNCTION "access_controls_after_update"();
##########
CREATE OR REPLACE FUNCTION "access_controls_after_delete"() RETURNS TRIGGER AS $access_controls_after_delete$
BEGIN
INSERT INTO "access_controls_history"("action", "original_id", "key", "value", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."key", "OLD"."value", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$access_controls_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "access_controls_after_delete_trigger" AFTER DELETE ON "access_controls"
FOR EACH ROW EXECUTE FUNCTION "access_controls_after_delete"();
CREATE TRIGGER `access_controls_after_delete`
AFTER DELETE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,48 +1,47 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `activity_pub_followers`
CREATE TABLE "activity_pub_followers_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"handle" VARCHAR(256) NOT NULL,
"inbox" VARCHAR(256) NOT NULL,
"subject" VARCHAR(256) NOT NULL,
"activity" VARCHAR(4096) NOT NULL,
"accepted" BOOLEAN NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_activity_pub_followers_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `activity_pub_followers`
CREATE TABLE "activity_pub_followers"
(
`id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"handle" VARCHAR(256) NOT NULL,
"inbox" VARCHAR(256) NOT NULL,
"subject" VARCHAR(256) NOT NULL,
"activity" VARCHAR(4096) NOT NULL,
"accepted" BOOLEAN NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_activity_pub_followers" PRIMARY KEY ("id")
);
##########
CREATE INDEX "idx_activity_pub_followers_status" ON "activity_pub_followers" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "activity_pub_followers_after_update"() RETURNS TRIGGER AS $activity_pub_followers_after_update$
BEGIN
INSERT INTO "activity_pub_followers_history"("action", "original_id", "handle", "inbox", "subject", "activity", "accepted", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."handle", "OLD"."inbox", "OLD"."subject", "OLD"."activity", "OLD"."accepted", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$activity_pub_followers_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `activity_pub_followers_after_update`
AFTER UPDATE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "activity_pub_followers_after_update_trigger" AFTER UPDATE ON "activity_pub_followers"
FOR EACH ROW EXECUTE FUNCTION "activity_pub_followers_after_update"();
##########
CREATE OR REPLACE FUNCTION "activity_pub_followers_after_delete"() RETURNS TRIGGER AS $activity_pub_followers_after_delete$
BEGIN
INSERT INTO "activity_pub_followers_history"("action", "original_id", "handle", "inbox", "subject", "activity", "accepted", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."handle", "OLD"."inbox", "OLD"."subject", "OLD"."activity", "OLD"."accepted", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$activity_pub_followers_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "activity_pub_followers_after_delete_trigger" AFTER DELETE ON "activity_pub_followers"
FOR EACH ROW EXECUTE FUNCTION "activity_pub_followers_after_delete"();
CREATE TRIGGER `activity_pub_followers_after_delete`
AFTER DELETE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,53 +1,52 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `activity_pub_incoming_activities`
CREATE TABLE "activity_pub_incoming_activities_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"identity_id" BIGINT NOT NULL,
"unique_identifier" VARCHAR(128) NOT NULL,
"timestamp" BIGINT NOT NULL,
"from" VARCHAR(256) NOT NULL,
"to" VARCHAR(256) NOT NULL,
"content" VARCHAR(4096) NOT NULL,
"raw" JSONB NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_activity_pub_incoming_activities_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `activity_pub_incoming_activities`
CREATE TABLE "activity_pub_incoming_activities"
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_incoming_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"identity_id" BIGINT NOT NULL,
"unique_identifier" VARCHAR(128) NOT NULL,
"timestamp" BIGINT NOT NULL,
"from" VARCHAR(256) NOT NULL,
"to" VARCHAR(256) NOT NULL,
"content" VARCHAR(4096) NOT NULL,
"raw" JSONB NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_activity_pub_incoming_activities" PRIMARY KEY ("id"),
CONSTRAINT "fk_activity_pub_incoming_activities_to_identities" FOREIGN KEY ("identity_id") REFERENCES "identities" ("id")
);
##########
CREATE INDEX "idx_activity_pub_incoming_activities_status" ON "activity_pub_incoming_activities" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "activity_pub_incoming_activities_after_update"() RETURNS TRIGGER AS $activity_pub_incoming_activities_after_update$
BEGIN
INSERT INTO "activity_pub_incoming_activities_history"("action", "original_id", "identity_id", "unique_identifier", "timestamp", "from", "to", "content", "raw", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."identity_id", "OLD"."unique_identifier", "OLD"."timestamp", "OLD"."from", "OLD"."to", "OLD"."content", "OLD"."raw", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$activity_pub_incoming_activities_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `activity_pub_incoming_activities_after_update`
AFTER UPDATE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "activity_pub_incoming_activities_after_update_trigger" AFTER UPDATE ON "activity_pub_incoming_activities"
FOR EACH ROW EXECUTE FUNCTION "activity_pub_incoming_activities_after_update"();
##########
CREATE OR REPLACE FUNCTION "activity_pub_incoming_activities_after_delete"() RETURNS TRIGGER AS $activity_pub_incoming_activities_after_delete$
BEGIN
INSERT INTO "activity_pub_incoming_activities_history"("action", "original_id", "identity_id", "unique_identifier", "timestamp", "from", "to", "content", "raw", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."identity_id", "OLD"."unique_identifier", "OLD"."timestamp", "OLD"."from", "OLD"."to", "OLD"."content", "OLD"."raw", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$activity_pub_incoming_activities_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "activity_pub_incoming_activities_after_delete_trigger" AFTER DELETE ON "activity_pub_incoming_activities"
FOR EACH ROW EXECUTE FUNCTION "activity_pub_incoming_activities_after_delete"();
CREATE TRIGGER `activity_pub_incoming_activities_after_delete`
AFTER DELETE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,53 +1,52 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `activity_pub_outgoing_activities`
CREATE TABLE "activity_pub_outgoing_activities_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"identity_id" BIGINT NOT NULL,
"unique_identifier" VARCHAR(128) NOT NULL,
"timestamp" BIGINT NOT NULL,
"from" VARCHAR(256) NOT NULL,
"to" VARCHAR(256) NOT NULL,
"content" VARCHAR(4096) NOT NULL,
"raw" JSONB NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_activity_pub_outgoing_activities_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `activity_pub_outgoing_activities`
CREATE TABLE "activity_pub_outgoing_activities"
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_outgoing_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"identity_id" BIGINT NOT NULL,
"unique_identifier" VARCHAR(128) NOT NULL,
"timestamp" BIGINT NOT NULL,
"from" VARCHAR(256) NOT NULL,
"to" VARCHAR(256) NOT NULL,
"content" VARCHAR(4096) NOT NULL,
"raw" JSONB NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_activity_pub_outgoing_activities" PRIMARY KEY ("id"),
CONSTRAINT "fk_activity_pub_outgoing_activities_to_identities" FOREIGN KEY ("identity_id") REFERENCES "identities" ("id")
);
##########
CREATE INDEX "idx_activity_pub_outgoing_activities_status" ON "activity_pub_outgoing_activities" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "activity_pub_outgoing_activities_after_update"() RETURNS TRIGGER AS $activity_pub_outgoing_activities_after_update$
BEGIN
INSERT INTO "activity_pub_outgoing_activities_history"("action", "original_id", "identity_id", "unique_identifier", "timestamp", "from", "to", "content", "raw", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."identity_id", "OLD"."unique_identifier", "OLD"."timestamp", "OLD"."from", "OLD"."to", "OLD"."content", "OLD"."raw", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$activity_pub_outgoing_activities_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `activity_pub_outgoing_activities_after_update`
AFTER UPDATE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "activity_pub_outgoing_activities_after_update_trigger" AFTER UPDATE ON "activity_pub_outgoing_activities"
FOR EACH ROW EXECUTE FUNCTION "activity_pub_outgoing_activities_after_update"();
##########
CREATE OR REPLACE FUNCTION "activity_pub_outgoing_activities_after_delete"() RETURNS TRIGGER AS $activity_pub_outgoing_activities_after_delete$
BEGIN
INSERT INTO "activity_pub_outgoing_activities_history"("action", "original_id", "identity_id", "unique_identifier", "timestamp", "from", "to", "content", "raw", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."identity_id", "OLD"."unique_identifier", "OLD"."timestamp", "OLD"."from", "OLD"."to", "OLD"."content", "OLD"."raw", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$activity_pub_outgoing_activities_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "activity_pub_outgoing_activities_after_delete_trigger" AFTER DELETE ON "activity_pub_outgoing_activities"
FOR EACH ROW EXECUTE FUNCTION "activity_pub_outgoing_activities_after_delete"();
CREATE TRIGGER `activity_pub_outgoing_activities_after_delete`
AFTER DELETE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,48 +1,47 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `categories`
CREATE TABLE "categories_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"category_type_id" BIGINT NOT NULL,
"category_id" BIGINT NOT NULL,
"title" VARCHAR(64) NOT NULL,
"description" VARCHAR(64) NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_categories_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `categories`
CREATE TABLE "categories"
(
`id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_categories_to_category_types` FOREIGN KEY (`category_type_id`) REFERENCES `category_types` (`id`),
CONSTRAINT `fk_categories_to_categories` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"category_type_id" BIGINT NOT NULL,
"category_id" BIGINT NOT NULL,
"title" VARCHAR(64) NOT NULL,
"description" VARCHAR(64) NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_categories" PRIMARY KEY ("id"),
CONSTRAINT "fk_categories_to_category_types" FOREIGN KEY ("category_type_id") REFERENCES "category_types" ("id"),
CONSTRAINT "fk_categories_to_categories" FOREIGN KEY ("category_id") REFERENCES "categories" ("id")
);
##########
CREATE INDEX "idx_categories_status" ON "categories" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "categories_after_update"() RETURNS TRIGGER AS $categories_after_update$
BEGIN
INSERT INTO "categories_history"("action", "original_id", "category_type_id", "category_id", "title", "description", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."category_type_id", "OLD"."category_id", "OLD"."title", "OLD"."description", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$categories_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `categories_after_update`
AFTER UPDATE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "categories_after_update_trigger" AFTER UPDATE ON "categories"
FOR EACH ROW EXECUTE FUNCTION "categories_after_update"();
##########
CREATE OR REPLACE FUNCTION "categories_after_delete"() RETURNS TRIGGER AS $categories_after_delete$
BEGIN
INSERT INTO "categories_history"("action", "original_id", "category_type_id", "category_id", "title", "description", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."category_type_id", "OLD"."category_id", "OLD"."title", "OLD"."description", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$categories_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "categories_after_delete_trigger" AFTER DELETE ON "categories"
FOR EACH ROW EXECUTE FUNCTION "categories_after_delete"();
CREATE TRIGGER `categories_after_delete`
AFTER DELETE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,40 +1,39 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `category_types`
CREATE TABLE "category_types_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"description" VARCHAR(64) NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_category_types_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `category_types`
CREATE TABLE "category_types"
(
`id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"description" VARCHAR(64) NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_category_types" PRIMARY KEY ("id")
);
##########
CREATE INDEX "idx_category_types_status" ON "category_types" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "category_types_after_update"() RETURNS TRIGGER AS $category_types_after_update$
BEGIN
INSERT INTO "category_types_history"("action", "original_id", "description", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."description", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$category_types_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `category_types_after_update`
AFTER UPDATE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "category_types_after_update_trigger" AFTER UPDATE ON "category_types"
FOR EACH ROW EXECUTE FUNCTION "category_types_after_update"();
##########
CREATE OR REPLACE FUNCTION "category_types_after_delete"() RETURNS TRIGGER AS $category_types_after_delete$
BEGIN
INSERT INTO "category_types_history"("action", "original_id", "description", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."description", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$category_types_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "category_types_after_delete_trigger" AFTER DELETE ON "category_types"
FOR EACH ROW EXECUTE FUNCTION "category_types_after_delete"();
CREATE TRIGGER `category_types_after_delete`
AFTER DELETE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,40 +1,39 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `documents`
CREATE TABLE "documents_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"content" JSONB NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_documents_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `documents`
CREATE TABLE "documents"
(
`id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"content" JSONB NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_documents" PRIMARY KEY ("id")
);
##########
CREATE INDEX "idx_documents_status" ON "documents" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "documents_after_update"() RETURNS TRIGGER AS $documents_after_update$
BEGIN
INSERT INTO "documents_history"("action", "original_id", "content", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."content", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$documents_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `documents_after_update`
AFTER UPDATE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "documents_after_update_trigger" AFTER UPDATE ON "documents"
FOR EACH ROW EXECUTE FUNCTION "documents_after_update"();
##########
CREATE OR REPLACE FUNCTION "documents_after_delete"() RETURNS TRIGGER AS $documents_after_delete$
BEGIN
INSERT INTO "documents_history"("action", "original_id", "content", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."content", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$documents_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "documents_after_delete_trigger" AFTER DELETE ON "documents"
FOR EACH ROW EXECUTE FUNCTION "documents_after_delete"();
CREATE TRIGGER `documents_after_delete`
AFTER DELETE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,80 +1,79 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `identities`
CREATE TABLE "identities_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"username" VARCHAR(32) NOT NULL,
"phone_number" VARCHAR(12) NOT NULL,
"phone_number_confirmed" BOOLEAN NOT NULL,
"first_name" VARCHAR(128) NOT NULL,
"last_name" VARCHAR(128) NOT NULL,
"display_name" VARCHAR(128) NOT NULL,
"email" VARCHAR(128) NOT NULL,
"email_confirmed" BOOLEAN NOT NULL,
"avatar" VARCHAR(512) NOT NULL,
"banner" VARCHAR(512) NOT NULL,
"summary" VARCHAR(512) NOT NULL,
"token" VARCHAR(256) NOT NULL,
"multi_factor" BOOLEAN NOT NULL,
"hash" VARCHAR(256) NOT NULL,
"salt" VARCHAR(64) NOT NULL,
"public_key" VARCHAR(4096) NOT NULL,
"private_key" VARCHAR(4096) NOT NULL,
"permission" BIGINT NOT NULL,
"restriction" INT NOT NULL,
"last_login" BIGINT NOT NULL,
"login_count" INT NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_identities_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `identities`
CREATE TABLE "identities"
(
`id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL UNIQUE,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL UNIQUE,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL UNIQUE,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"username" VARCHAR(32) NOT NULL CONSTRAINT "udx_identities_username" UNIQUE,
"phone_number" VARCHAR(12) NOT NULL,
"phone_number_confirmed" BOOLEAN NOT NULL,
"first_name" VARCHAR(128) NOT NULL,
"last_name" VARCHAR(128) NOT NULL,
"display_name" VARCHAR(128) NOT NULL,
"email" VARCHAR(128) NOT NULL CONSTRAINT "udx_identities_email" UNIQUE,
"email_confirmed" BOOLEAN NOT NULL,
"avatar" VARCHAR(512) NOT NULL,
"banner" VARCHAR(512) NOT NULL,
"summary" VARCHAR(512) NOT NULL,
"token" VARCHAR(256) NOT NULL CONSTRAINT "udx_identities_token" UNIQUE,
"multi_factor" BOOLEAN NOT NULL,
"hash" VARCHAR(256) NOT NULL,
"salt" VARCHAR(64) NOT NULL,
"public_key" VARCHAR(4096) NOT NULL,
"private_key" VARCHAR(4096) NOT NULL,
"permission" BIGINT NOT NULL,
"restriction" INT NOT NULL,
"last_login" BIGINT NOT NULL,
"login_count" INT NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_identities" PRIMARY KEY ("id")
);
##########
CREATE INDEX "idx_identities_status" ON "identities" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "identities_after_update"() RETURNS TRIGGER AS $identities_after_update$
BEGIN
INSERT INTO "identities_history"("action", "original_id", "username", "phone_number", "phone_number_confirmed", "first_name", "last_name", "display_name", "email", "email_confirmed", "avatar", "banner", "summary", "token", "multi_factor", "hash", "salt", "public_key", "private_key", "permission", "restriction", "last_login", "login_count", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."username", "OLD"."phone_number", "OLD"."phone_number_confirmed", "OLD"."first_name", "OLD"."last_name", "OLD"."display_name", "OLD"."email", "OLD"."email_confirmed", "OLD"."avatar", "OLD"."banner", "OLD"."summary", "OLD"."token", "OLD"."multi_factor", "OLD"."hash", "OLD"."salt", "OLD"."public_key", "OLD"."private_key", "OLD"."permission", "OLD"."restriction", "OLD"."last_login", "OLD"."login_count", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$identities_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `identities_after_update`
AFTER UPDATE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "identities_after_update_trigger" AFTER UPDATE ON "identities"
FOR EACH ROW EXECUTE FUNCTION "identities_after_update"();
##########
CREATE OR REPLACE FUNCTION "identities_after_delete"() RETURNS TRIGGER AS $identities_after_delete$
BEGIN
INSERT INTO "identities_history"("action", "original_id", "username", "phone_number", "phone_number_confirmed", "first_name", "last_name", "display_name", "email", "email_confirmed", "avatar", "banner", "summary", "token", "multi_factor", "hash", "salt", "public_key", "private_key", "permission", "restriction", "last_login", "login_count", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."username", "OLD"."phone_number", "OLD"."phone_number_confirmed", "OLD"."first_name", "OLD"."last_name", "OLD"."display_name", "OLD"."email", "OLD"."email_confirmed", "OLD"."avatar", "OLD"."banner", "OLD"."summary", "OLD"."token", "OLD"."multi_factor", "OLD"."hash", "OLD"."salt", "OLD"."public_key", "OLD"."private_key", "OLD"."permission", "OLD"."restriction", "OLD"."last_login", "OLD"."login_count", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$identities_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "identities_after_delete_trigger" AFTER DELETE ON "identities"
FOR EACH ROW EXECUTE FUNCTION "identities_after_delete"();
CREATE TRIGGER `identities_after_delete`
AFTER DELETE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,54 +1,53 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `remote_activities`
CREATE TABLE "remote_activities_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"entry_point" VARCHAR(256) NOT NULL,
"duration" BIGINT NOT NULL,
"successful" BOOLEAN NOT NULL,
"error_message" VARCHAR(1024) NOT NULL,
"remote_address" VARCHAR(128) NOT NULL,
"user_agent" VARCHAR(512) NOT NULL,
"event_type" INT NOT NULL,
"timestamp" BIGINT NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_remote_activities_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `remote_activities`
CREATE TABLE "remote_activities"
(
`id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"entry_point" VARCHAR(256) NOT NULL,
"duration" BIGINT NOT NULL,
"successful" BOOLEAN NOT NULL,
"error_message" VARCHAR(1024) NOT NULL,
"remote_address" VARCHAR(128) NOT NULL,
"user_agent" VARCHAR(512) NOT NULL,
"event_type" INT NOT NULL,
"timestamp" BIGINT NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_remote_activities" PRIMARY KEY ("id")
);
##########
CREATE INDEX "idx_remote_activities_status" ON "remote_activities" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "remote_activities_after_update"() RETURNS TRIGGER AS $remote_activities_after_update$
BEGIN
INSERT INTO "remote_activities_history"("action", "original_id", "entry_point", "duration", "successful", "error_message", "remote_address", "user_agent", "event_type", "timestamp", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."entry_point", "OLD"."duration", "OLD"."successful", "OLD"."error_message", "OLD"."remote_address", "OLD"."user_agent", "OLD"."event_type", "OLD"."timestamp", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$remote_activities_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `remote_activities_after_update`
AFTER UPDATE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "remote_activities_after_update_trigger" AFTER UPDATE ON "remote_activities"
FOR EACH ROW EXECUTE FUNCTION "remote_activities_after_update"();
##########
CREATE OR REPLACE FUNCTION "remote_activities_after_delete"() RETURNS TRIGGER AS $remote_activities_after_delete$
BEGIN
INSERT INTO "remote_activities_history"("action", "original_id", "entry_point", "duration", "successful", "error_message", "remote_address", "user_agent", "event_type", "timestamp", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."entry_point", "OLD"."duration", "OLD"."successful", "OLD"."error_message", "OLD"."remote_address", "OLD"."user_agent", "OLD"."event_type", "OLD"."timestamp", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$remote_activities_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "remote_activities_after_delete_trigger" AFTER DELETE ON "remote_activities"
FOR EACH ROW EXECUTE FUNCTION "remote_activities_after_delete"();
CREATE TRIGGER `remote_activities_after_delete`
AFTER DELETE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,42 +1,41 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `system_schedules`
CREATE TABLE "system_schedules_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"enabled" BOOLEAN NOT NULL,
"config" VARCHAR(1024) NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_system_schedules_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `system_schedules`
CREATE TABLE "system_schedules"
(
`id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"enabled" BOOLEAN NOT NULL,
"config" VARCHAR(1024) NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_system_schedules" PRIMARY KEY ("id")
);
##########
CREATE INDEX "idx_system_schedules_status" ON "system_schedules" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "system_schedules_after_update"() RETURNS TRIGGER AS $system_schedules_after_update$
BEGIN
INSERT INTO "system_schedules_history"("action", "original_id", "enabled", "config", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."enabled", "OLD"."config", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$system_schedules_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `system_schedules_after_update`
AFTER UPDATE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "system_schedules_after_update_trigger" AFTER UPDATE ON "system_schedules"
FOR EACH ROW EXECUTE FUNCTION "system_schedules_after_update"();
##########
CREATE OR REPLACE FUNCTION "system_schedules_after_delete"() RETURNS TRIGGER AS $system_schedules_after_delete$
BEGIN
INSERT INTO "system_schedules_history"("action", "original_id", "enabled", "config", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."enabled", "OLD"."config", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$system_schedules_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "system_schedules_after_delete_trigger" AFTER DELETE ON "system_schedules"
FOR EACH ROW EXECUTE FUNCTION "system_schedules_after_delete"();
CREATE TRIGGER `system_schedules_after_delete`
AFTER DELETE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,41 +1,40 @@
USE `###DATABASE###_history`;
##########
CREATE TABLE `users`
CREATE TABLE "users_history"
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGSERIAL NOT NULL,
"action" VARCHAR(16) NOT NULL,
"original_id" BIGINT NOT NULL,
"github" VARCHAR(512) NOT NULL,
"editor" BIGINT NOT NULL,
"status" BIGINT NOT NULL,
"sort_order" REAL NOT NULL,
"queued_at" BIGINT NOT NULL,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"triggered_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"changed_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_users_history" PRIMARY KEY ("id")
);
USE `###DATABASE###`;
##########
CREATE TABLE `users`
CREATE TABLE "users"
(
`id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_users_to_identities` FOREIGN KEY (`id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
"id" BIGINT NOT NULL,
"github" VARCHAR(512) NOT NULL,
"editor" BIGINT NOT NULL DEFAULT 0,
"status" BIGINT NOT NULL DEFAULT 0,
"sort_order" REAL NOT NULL DEFAULT 0,
"queued_at" BIGINT NOT NULL DEFAULT 0,
"created_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updated_at" TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
"payload" JSONB NULL,
CONSTRAINT "pk_users" PRIMARY KEY ("id"),
CONSTRAINT "fk_users_to_identities" FOREIGN KEY ("id") REFERENCES "identities" ("id")
);
##########
CREATE INDEX "idx_users_status" ON "users" ("status");

Wyświetl plik

@ -1,18 +1,28 @@
##########
USE `###DATABASE###`;
CREATE OR REPLACE FUNCTION "users_after_update"() RETURNS TRIGGER AS $users_after_update$
BEGIN
INSERT INTO "users_history"("action", "original_id", "github", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('update', "OLD"."id", "OLD"."github", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$users_after_update$ LANGUAGE plpgsql;
CREATE TRIGGER `users_after_update`
AFTER UPDATE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;
##########
CREATE OR REPLACE TRIGGER "users_after_update_trigger" AFTER UPDATE ON "users"
FOR EACH ROW EXECUTE FUNCTION "users_after_update"();
##########
CREATE OR REPLACE FUNCTION "users_after_delete"() RETURNS TRIGGER AS $users_after_delete$
BEGIN
INSERT INTO "users_history"("action", "original_id", "github", "editor", "status", "sort_order", "queued_at", "created_at", "updated_at", "payload")
VALUES('delete', "OLD"."id", "OLD"."github", "OLD"."editor", "OLD"."status", "OLD"."sort_order", "OLD"."queued_at", "OLD"."created_at", "OLD"."updated_at", "OLD"."payload");
END;
$users_after_delete$ LANGUAGE plpgsql;
##########
CREATE OR REPLACE TRIGGER "users_after_delete_trigger" AFTER DELETE ON "users"
FOR EACH ROW EXECUTE FUNCTION "users_after_delete"();
CREATE TRIGGER `users_after_delete`
AFTER DELETE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `###DATABASE###_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END;

Wyświetl plik

@ -1,843 +0,0 @@
DROP DATABASE IF EXISTS `greatape_dev_history`;
CREATE DATABASE `greatape_dev_history` CHARSET = `utf8mb4` COLLATE = `utf8mb4_unicode_ci`;
USE `greatape_dev_history`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Documents
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `documents`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ SystemSchedules
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `system_schedules`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Identities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `identities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ AccessControls
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `access_controls`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ RemoteActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `remote_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ CategoryTypes
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `category_types`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Categories
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `categories`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Users
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `users`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubIncomingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_incoming_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubOutgoingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_outgoing_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubFollowers
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_followers`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ══════════════════════════════════════════════════════════════════════════════════════════════════════════════
DROP DATABASE IF EXISTS `greatape_dev`;
CREATE DATABASE `greatape_dev` CHARSET = `utf8mb4` COLLATE = `utf8mb4_unicode_ci`;
USE `greatape_dev`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Documents
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `documents`
(
`id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `documents_after_update`
AFTER UPDATE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `documents_after_delete`
AFTER DELETE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ SystemSchedules
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `system_schedules`
(
`id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `system_schedules_after_update`
AFTER UPDATE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `system_schedules_after_delete`
AFTER DELETE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Identities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `identities`
(
`id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL UNIQUE,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL UNIQUE,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL UNIQUE,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `identities_after_update`
AFTER UPDATE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `identities_after_delete`
AFTER DELETE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ AccessControls
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `access_controls`
(
`id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `access_controls_after_update`
AFTER UPDATE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `access_controls_after_delete`
AFTER DELETE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ RemoteActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `remote_activities`
(
`id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `remote_activities_after_update`
AFTER UPDATE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `remote_activities_after_delete`
AFTER DELETE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ CategoryTypes
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `category_types`
(
`id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `category_types_after_update`
AFTER UPDATE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `category_types_after_delete`
AFTER DELETE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Categories
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `categories`
(
`id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_categories_to_category_types` FOREIGN KEY (`category_type_id`) REFERENCES `category_types` (`id`),
CONSTRAINT `fk_categories_to_categories` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `categories_after_update`
AFTER UPDATE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `categories_after_delete`
AFTER DELETE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Users
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `users`
(
`id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_users_to_identities` FOREIGN KEY (`id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `users_after_update`
AFTER UPDATE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `users_after_delete`
AFTER DELETE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubIncomingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_incoming_activities`
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_incoming_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_incoming_activities_after_update`
AFTER UPDATE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_incoming_activities_after_delete`
AFTER DELETE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubOutgoingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_outgoing_activities`
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_outgoing_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_outgoing_activities_after_update`
AFTER UPDATE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_outgoing_activities_after_delete`
AFTER DELETE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubFollowers
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_followers`
(
`id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_followers_after_update`
AFTER UPDATE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_followers_after_delete`
AFTER DELETE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `greatape_dev_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Initialization
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# Identities
INSERT INTO `identities` (`id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`) VALUES (0, 'INVALID', '0', false, '', '', '', 'invalid@localhost', false, '', '', '', '0', b'0', '', '', '', '', 0, 0, 0, 0);
INSERT INTO `identities` (`id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`) VALUES (1, 'root', '1', false, '', '', '', 'root@localhost', false, '', '', '', '1', b'1', '', '', '', '', 0xFFFFFFFF, 0, 0, 0);
# Users
INSERT INTO `users` (`id`, `github`) VALUES (0, '');
INSERT INTO `users` (`id`, `github`) VALUES (1, '');
# CategoryTypes
INSERT INTO `category_types` (`id`, `description`) VALUES (0, 'INVALID');
# Categories
INSERT INTO `categories` (`id`, `category_type_id`, `category_id`, `title`, `description`) VALUES (0, 0, 0, 'INVALID', '');

Wyświetl plik

@ -1,843 +0,0 @@
DROP DATABASE IF EXISTS `greatape_history`;
CREATE DATABASE `greatape_history` CHARSET = `utf8mb4` COLLATE = `utf8mb4_unicode_ci`;
USE `greatape_history`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Documents
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `documents`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ SystemSchedules
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `system_schedules`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Identities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `identities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ AccessControls
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `access_controls`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ RemoteActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `remote_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ CategoryTypes
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `category_types`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Categories
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `categories`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Users
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `users`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubIncomingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_incoming_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubOutgoingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_outgoing_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubFollowers
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_followers`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ══════════════════════════════════════════════════════════════════════════════════════════════════════════════
DROP DATABASE IF EXISTS `greatape`;
CREATE DATABASE `greatape` CHARSET = `utf8mb4` COLLATE = `utf8mb4_unicode_ci`;
USE `greatape`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Documents
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `documents`
(
`id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `documents_after_update`
AFTER UPDATE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `documents_after_delete`
AFTER DELETE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ SystemSchedules
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `system_schedules`
(
`id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `system_schedules_after_update`
AFTER UPDATE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `system_schedules_after_delete`
AFTER DELETE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Identities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `identities`
(
`id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL UNIQUE,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL UNIQUE,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL UNIQUE,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `identities_after_update`
AFTER UPDATE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `identities_after_delete`
AFTER DELETE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ AccessControls
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `access_controls`
(
`id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `access_controls_after_update`
AFTER UPDATE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `access_controls_after_delete`
AFTER DELETE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ RemoteActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `remote_activities`
(
`id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `remote_activities_after_update`
AFTER UPDATE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `remote_activities_after_delete`
AFTER DELETE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ CategoryTypes
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `category_types`
(
`id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `category_types_after_update`
AFTER UPDATE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `category_types_after_delete`
AFTER DELETE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Categories
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `categories`
(
`id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_categories_to_category_types` FOREIGN KEY (`category_type_id`) REFERENCES `category_types` (`id`),
CONSTRAINT `fk_categories_to_categories` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `categories_after_update`
AFTER UPDATE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `categories_after_delete`
AFTER DELETE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Users
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `users`
(
`id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_users_to_identities` FOREIGN KEY (`id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `users_after_update`
AFTER UPDATE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `users_after_delete`
AFTER DELETE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubIncomingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_incoming_activities`
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_incoming_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_incoming_activities_after_update`
AFTER UPDATE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_incoming_activities_after_delete`
AFTER DELETE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubOutgoingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_outgoing_activities`
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_outgoing_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_outgoing_activities_after_update`
AFTER UPDATE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_outgoing_activities_after_delete`
AFTER DELETE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubFollowers
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_followers`
(
`id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_followers_after_update`
AFTER UPDATE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_followers_after_delete`
AFTER DELETE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `greatape_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Initialization
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# Identities
INSERT INTO `identities` (`id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`) VALUES (0, 'INVALID', '0', false, '', '', '', 'invalid@localhost', false, '', '', '', '0', b'0', '', '', '', '', 0, 0, 0, 0);
INSERT INTO `identities` (`id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`) VALUES (1, 'root', '1', false, '', '', '', 'root@localhost', false, '', '', '', '1', b'1', '', '', '', '', 0xFFFFFFFF, 0, 0, 0);
# Users
INSERT INTO `users` (`id`, `github`) VALUES (0, '');
INSERT INTO `users` (`id`, `github`) VALUES (1, '');
# CategoryTypes
INSERT INTO `category_types` (`id`, `description`) VALUES (0, 'INVALID');
# Categories
INSERT INTO `categories` (`id`, `category_type_id`, `category_id`, `title`, `description`) VALUES (0, 0, 0, 'INVALID', '');

Wyświetl plik

@ -1,843 +0,0 @@
DROP DATABASE IF EXISTS `greatape_staging_history`;
CREATE DATABASE `greatape_staging_history` CHARSET = `utf8mb4` COLLATE = `utf8mb4_unicode_ci`;
USE `greatape_staging_history`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Documents
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `documents`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ SystemSchedules
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `system_schedules`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Identities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `identities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ AccessControls
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `access_controls`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ RemoteActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `remote_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ CategoryTypes
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `category_types`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Categories
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `categories`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Users
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `users`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubIncomingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_incoming_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubOutgoingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_outgoing_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubFollowers
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_followers`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ══════════════════════════════════════════════════════════════════════════════════════════════════════════════
DROP DATABASE IF EXISTS `greatape_staging`;
CREATE DATABASE `greatape_staging` CHARSET = `utf8mb4` COLLATE = `utf8mb4_unicode_ci`;
USE `greatape_staging`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Documents
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `documents`
(
`id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `documents_after_update`
AFTER UPDATE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `documents_after_delete`
AFTER DELETE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ SystemSchedules
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `system_schedules`
(
`id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `system_schedules_after_update`
AFTER UPDATE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `system_schedules_after_delete`
AFTER DELETE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Identities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `identities`
(
`id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL UNIQUE,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL UNIQUE,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL UNIQUE,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `identities_after_update`
AFTER UPDATE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `identities_after_delete`
AFTER DELETE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ AccessControls
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `access_controls`
(
`id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `access_controls_after_update`
AFTER UPDATE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `access_controls_after_delete`
AFTER DELETE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ RemoteActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `remote_activities`
(
`id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `remote_activities_after_update`
AFTER UPDATE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `remote_activities_after_delete`
AFTER DELETE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ CategoryTypes
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `category_types`
(
`id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `category_types_after_update`
AFTER UPDATE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `category_types_after_delete`
AFTER DELETE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Categories
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `categories`
(
`id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_categories_to_category_types` FOREIGN KEY (`category_type_id`) REFERENCES `category_types` (`id`),
CONSTRAINT `fk_categories_to_categories` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `categories_after_update`
AFTER UPDATE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `categories_after_delete`
AFTER DELETE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Users
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `users`
(
`id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_users_to_identities` FOREIGN KEY (`id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `users_after_update`
AFTER UPDATE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `users_after_delete`
AFTER DELETE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubIncomingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_incoming_activities`
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_incoming_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_incoming_activities_after_update`
AFTER UPDATE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_incoming_activities_after_delete`
AFTER DELETE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubOutgoingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_outgoing_activities`
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_outgoing_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_outgoing_activities_after_update`
AFTER UPDATE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_outgoing_activities_after_delete`
AFTER DELETE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubFollowers
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_followers`
(
`id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_followers_after_update`
AFTER UPDATE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_followers_after_delete`
AFTER DELETE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `greatape_staging_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Initialization
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# Identities
INSERT INTO `identities` (`id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`) VALUES (0, 'INVALID', '0', false, '', '', '', 'invalid@localhost', false, '', '', '', '0', b'0', '', '', '', '', 0, 0, 0, 0);
INSERT INTO `identities` (`id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`) VALUES (1, 'root', '1', false, '', '', '', 'root@localhost', false, '', '', '', '1', b'1', '', '', '', '', 0xFFFFFFFF, 0, 0, 0);
# Users
INSERT INTO `users` (`id`, `github`) VALUES (0, '');
INSERT INTO `users` (`id`, `github`) VALUES (1, '');
# CategoryTypes
INSERT INTO `category_types` (`id`, `description`) VALUES (0, 'INVALID');
# Categories
INSERT INTO `categories` (`id`, `category_type_id`, `category_id`, `title`, `description`) VALUES (0, 0, 0, 'INVALID', '');

Wyświetl plik

@ -1,843 +0,0 @@
DROP DATABASE IF EXISTS `greatape_test_history`;
CREATE DATABASE `greatape_test_history` CHARSET = `utf8mb4` COLLATE = `utf8mb4_unicode_ci`;
USE `greatape_test_history`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Documents
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `documents`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ SystemSchedules
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `system_schedules`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Identities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `identities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ AccessControls
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `access_controls`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ RemoteActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `remote_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ CategoryTypes
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `category_types`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Categories
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `categories`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Users
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `users`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubIncomingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_incoming_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubOutgoingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_outgoing_activities`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubFollowers
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_followers`
(
`id` BIGINT NOT NULL AUTO_INCREMENT,
`action` VARCHAR(16) NOT NULL,
`original_id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL,
`status` BIGINT NOT NULL,
`sort_order` FLOAT NOT NULL,
`queued_at` BIGINT NOT NULL,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`triggered_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`changed_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
# ══════════════════════════════════════════════════════════════════════════════════════════════════════════════
DROP DATABASE IF EXISTS `greatape_test`;
CREATE DATABASE `greatape_test` CHARSET = `utf8mb4` COLLATE = `utf8mb4_unicode_ci`;
USE `greatape_test`;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Documents
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `documents`
(
`id` BIGINT NOT NULL,
`content` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `documents_after_update`
AFTER UPDATE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `documents_after_delete`
AFTER DELETE
ON `documents` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`documents`(`action`, `original_id`, `content`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`content`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ SystemSchedules
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `system_schedules`
(
`id` BIGINT NOT NULL,
`enabled` BIT(1) NOT NULL,
`config` VARCHAR(1024) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `system_schedules_after_update`
AFTER UPDATE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `system_schedules_after_delete`
AFTER DELETE
ON `system_schedules` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`system_schedules`(`action`, `original_id`, `enabled`, `config`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`enabled`, `old`.`config`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Identities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `identities`
(
`id` BIGINT NOT NULL,
`username` VARCHAR(32) NOT NULL UNIQUE,
`phone_number` VARCHAR(12) NOT NULL,
`phone_number_confirmed` BIT(1) NOT NULL,
`first_name` VARCHAR(128) NOT NULL,
`last_name` VARCHAR(128) NOT NULL,
`display_name` VARCHAR(128) NOT NULL,
`email` VARCHAR(128) NOT NULL UNIQUE,
`email_confirmed` BIT(1) NOT NULL,
`avatar` VARCHAR(512) NOT NULL,
`banner` VARCHAR(512) NOT NULL,
`summary` VARCHAR(512) NOT NULL,
`token` VARCHAR(256) NOT NULL UNIQUE,
`multi_factor` BIT(1) NOT NULL,
`hash` VARCHAR(256) NOT NULL,
`salt` VARCHAR(64) NOT NULL,
`public_key` VARCHAR(4096) NOT NULL,
`private_key` VARCHAR(4096) NOT NULL,
`permission` BIGINT UNSIGNED NOT NULL,
`restriction` INT UNSIGNED NOT NULL,
`last_login` BIGINT NOT NULL,
`login_count` INT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `identities_after_update`
AFTER UPDATE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `identities_after_delete`
AFTER DELETE
ON `identities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`identities`(`action`, `original_id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`username`, `old`.`phone_number`, `old`.`phone_number_confirmed`, `old`.`first_name`, `old`.`last_name`, `old`.`display_name`, `old`.`email`, `old`.`email_confirmed`, `old`.`avatar`, `old`.`banner`, `old`.`summary`, `old`.`token`, `old`.`multi_factor`, `old`.`hash`, `old`.`salt`, `old`.`public_key`, `old`.`private_key`, `old`.`permission`, `old`.`restriction`, `old`.`last_login`, `old`.`login_count`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ AccessControls
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `access_controls`
(
`id` BIGINT NOT NULL,
`key` BIGINT UNSIGNED NOT NULL,
`value` BIGINT UNSIGNED NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `access_controls_after_update`
AFTER UPDATE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `access_controls_after_delete`
AFTER DELETE
ON `access_controls` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`access_controls`(`action`, `original_id`, `key`, `value`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`key`, `old`.`value`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ RemoteActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `remote_activities`
(
`id` BIGINT NOT NULL,
`entry_point` VARCHAR(256) NOT NULL,
`duration` BIGINT NOT NULL,
`successful` BIT(1) NOT NULL,
`error_message` VARCHAR(1024) NOT NULL,
`remote_address` VARCHAR(128) NOT NULL,
`user_agent` VARCHAR(512) NOT NULL,
`event_type` INT UNSIGNED NOT NULL,
`timestamp` BIGINT NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `remote_activities_after_update`
AFTER UPDATE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `remote_activities_after_delete`
AFTER DELETE
ON `remote_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`remote_activities`(`action`, `original_id`, `entry_point`, `duration`, `successful`, `error_message`, `remote_address`, `user_agent`, `event_type`, `timestamp`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`entry_point`, `old`.`duration`, `old`.`successful`, `old`.`error_message`, `old`.`remote_address`, `old`.`user_agent`, `old`.`event_type`, `old`.`timestamp`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ CategoryTypes
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `category_types`
(
`id` BIGINT NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `category_types_after_update`
AFTER UPDATE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `category_types_after_delete`
AFTER DELETE
ON `category_types` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`category_types`(`action`, `original_id`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Categories
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `categories`
(
`id` BIGINT NOT NULL,
`category_type_id` BIGINT NOT NULL,
`category_id` BIGINT NOT NULL,
`title` VARCHAR(64) NOT NULL,
`description` VARCHAR(64) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_categories_to_category_types` FOREIGN KEY (`category_type_id`) REFERENCES `category_types` (`id`),
CONSTRAINT `fk_categories_to_categories` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `categories_after_update`
AFTER UPDATE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `categories_after_delete`
AFTER DELETE
ON `categories` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`categories`(`action`, `original_id`, `category_type_id`, `category_id`, `title`, `description`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`category_type_id`, `old`.`category_id`, `old`.`title`, `old`.`description`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Users
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `users`
(
`id` BIGINT NOT NULL,
`github` VARCHAR(512) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_users_to_identities` FOREIGN KEY (`id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `users_after_update`
AFTER UPDATE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `users_after_delete`
AFTER DELETE
ON `users` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`users`(`action`, `original_id`, `github`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`github`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubIncomingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_incoming_activities`
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_incoming_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_incoming_activities_after_update`
AFTER UPDATE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_incoming_activities_after_delete`
AFTER DELETE
ON `activity_pub_incoming_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`activity_pub_incoming_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubOutgoingActivities
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_outgoing_activities`
(
`id` BIGINT NOT NULL,
`identity_id` BIGINT NOT NULL,
`unique_identifier` VARCHAR(128) NOT NULL,
`timestamp` BIGINT NOT NULL,
`from` VARCHAR(256) NOT NULL,
`to` VARCHAR(256) NOT NULL,
`content` VARCHAR(4096) NOT NULL,
`raw` JSON NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`),
CONSTRAINT `fk_activity_pub_outgoing_activities_to_identities` FOREIGN KEY (`identity_id`) REFERENCES `identities` (`id`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_outgoing_activities_after_update`
AFTER UPDATE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_outgoing_activities_after_delete`
AFTER DELETE
ON `activity_pub_outgoing_activities` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`activity_pub_outgoing_activities`(`action`, `original_id`, `identity_id`, `unique_identifier`, `timestamp`, `from`, `to`, `content`, `raw`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`identity_id`, `old`.`unique_identifier`, `old`.`timestamp`, `old`.`from`, `old`.`to`, `old`.`content`, `old`.`raw`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ ActivityPubFollowers
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
CREATE TABLE `activity_pub_followers`
(
`id` BIGINT NOT NULL,
`handle` VARCHAR(256) NOT NULL,
`inbox` VARCHAR(256) NOT NULL,
`subject` VARCHAR(256) NOT NULL,
`activity` VARCHAR(4096) NOT NULL,
`accepted` BIT(1) NOT NULL,
`editor` BIGINT NOT NULL DEFAULT 0,
`status` BIGINT NOT NULL DEFAULT 0,
`sort_order` FLOAT NOT NULL DEFAULT 0,
`queued_at` BIGINT NOT NULL DEFAULT 0,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`payload` JSON NULL,
PRIMARY KEY (`id`),
INDEX (`status`)
) ENGINE = InnoDB
DEFAULT CHARSET = `utf8mb4`
COLLATE = `utf8mb4_unicode_ci`;
DELIMITER $$
CREATE TRIGGER `activity_pub_followers_after_update`
AFTER UPDATE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('update', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
CREATE TRIGGER `activity_pub_followers_after_delete`
AFTER DELETE
ON `activity_pub_followers` FOR EACH ROW
BEGIN
INSERT INTO `greatape_test_history`.`activity_pub_followers`(`action`, `original_id`, `handle`, `inbox`, `subject`, `activity`, `accepted`, `editor`, `status`, `sort_order`, `queued_at`, `created_at`, `updated_at`, `payload`)
VALUES('delete', `old`.`id`, `old`.`handle`, `old`.`inbox`, `old`.`subject`, `old`.`activity`, `old`.`accepted`, `old`.`editor`, `old`.`status`, `old`.`sort_order`, `old`.`queued_at`, `old`.`created_at`, `old`.`updated_at`, `old`.`payload`);
END$$
DELIMITER ;
# ╔═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# ║ Initialization
# ╚═════════════════════════════════════════════════════════════════════════════════════════════════════════════
# Identities
INSERT INTO `identities` (`id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`) VALUES (0, 'INVALID', '0', false, '', '', '', 'invalid@localhost', false, '', '', '', '0', b'0', '', '', '', '', 0, 0, 0, 0);
INSERT INTO `identities` (`id`, `username`, `phone_number`, `phone_number_confirmed`, `first_name`, `last_name`, `display_name`, `email`, `email_confirmed`, `avatar`, `banner`, `summary`, `token`, `multi_factor`, `hash`, `salt`, `public_key`, `private_key`, `permission`, `restriction`, `last_login`, `login_count`) VALUES (1, 'root', '1', false, '', '', '', 'root@localhost', false, '', '', '', '1', b'1', '', '', '', '', 0xFFFFFFFF, 0, 0, 0);
# Users
INSERT INTO `users` (`id`, `github`) VALUES (0, '');
INSERT INTO `users` (`id`, `github`) VALUES (1, '');
# CategoryTypes
INSERT INTO `category_types` (`id`, `description`) VALUES (0, 'INVALID');
# Categories
INSERT INTO `categories` (`id`, `category_type_id`, `category_id`, `title`, `description`) VALUES (0, 0, 0, 'INVALID', '');