announcments

This commit is contained in:
2026-02-22 13:03:00 +03:30
parent 2c4b4fdc56
commit 6cd55454e8
18 changed files with 853 additions and 2 deletions
+221 -1
View File
@@ -4,6 +4,118 @@
],
"name": "public",
"tables": [
{
"columns": {
"id": {
"name": "id",
"type": "char(26)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 26,
"mappedType": "character"
},
"created_at": {
"name": "created_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 6,
"default": "now()",
"mappedType": "datetime"
},
"deleted_at": {
"name": "deleted_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": true,
"length": 6,
"mappedType": "datetime"
},
"title": {
"name": "title",
"type": "varchar(100)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 100,
"mappedType": "string"
},
"content": {
"name": "content",
"type": "text",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"mappedType": "text"
},
"publish_at": {
"name": "publish_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": true,
"length": 6,
"mappedType": "datetime"
},
"is_important": {
"name": "is_important",
"type": "boolean",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"default": "false",
"mappedType": "boolean"
},
"is_public": {
"name": "is_public",
"type": "boolean",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"default": "false",
"mappedType": "boolean"
}
},
"name": "announcements",
"schema": "public",
"indexes": [
{
"keyName": "announcements_is_public_created_at_index",
"columnNames": [
"is_public",
"created_at"
],
"composite": true,
"constraint": false,
"primary": false,
"unique": false
},
{
"keyName": "announcements_pkey",
"columnNames": [
"id"
],
"composite": false,
"constraint": true,
"primary": true,
"unique": true
}
],
"checks": [],
"foreignKeys": {},
"nativeEnums": {}
},
{
"columns": {
"id": {
@@ -728,7 +840,8 @@
"create_print",
"view_print",
"manage_learnings",
"manage_criticisms"
"manage_criticisms",
"manage_announcements"
],
"mappedType": "enum"
},
@@ -3474,6 +3587,113 @@
}
},
"nativeEnums": {}
},
{
"columns": {
"id": {
"name": "id",
"type": "char(26)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 26,
"mappedType": "character"
},
"created_at": {
"name": "created_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 6,
"default": "now()",
"mappedType": "datetime"
},
"deleted_at": {
"name": "deleted_at",
"type": "timestamptz",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": true,
"length": 6,
"mappedType": "datetime"
},
"user_id": {
"name": "user_id",
"type": "char(26)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 26,
"mappedType": "character"
},
"announcement_id": {
"name": "announcement_id",
"type": "char(26)",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"length": 26,
"mappedType": "character"
},
"is_read": {
"name": "is_read",
"type": "boolean",
"unsigned": false,
"autoincrement": false,
"primary": false,
"nullable": false,
"default": "false",
"mappedType": "boolean"
}
},
"name": "user_announcements",
"schema": "public",
"indexes": [
{
"keyName": "user_announcements_pkey",
"columnNames": [
"id"
],
"composite": false,
"constraint": true,
"primary": true,
"unique": true
}
],
"checks": [],
"foreignKeys": {
"user_announcements_user_id_foreign": {
"constraintName": "user_announcements_user_id_foreign",
"columnNames": [
"user_id"
],
"localTableName": "public.user_announcements",
"referencedColumnNames": [
"id"
],
"referencedTableName": "public.users",
"updateRule": "cascade"
},
"user_announcements_announcement_id_foreign": {
"constraintName": "user_announcements_announcement_id_foreign",
"columnNames": [
"announcement_id"
],
"localTableName": "public.user_announcements",
"referencedColumnNames": [
"id"
],
"referencedTableName": "public.announcements",
"updateRule": "cascade"
}
},
"nativeEnums": {}
}
],
"nativeEnums": {}
@@ -0,0 +1,27 @@
import { Migration } from '@mikro-orm/migrations';
export class Migration20260222092921 extends Migration {
override async up(): Promise<void> {
this.addSql(`create table "announcements" ("id" char(26) not null, "created_at" timestamptz not null default now(), "deleted_at" timestamptz null, "title" varchar(100) not null, "content" text not null, "publish_at" timestamptz null, "is_important" boolean not null default false, "is_public" boolean not null default false, constraint "announcements_pkey" primary key ("id"));`);
this.addSql(`create index "announcements_is_public_created_at_index" on "announcements" ("is_public", "created_at");`);
this.addSql(`create table "user_announcements" ("id" char(26) not null, "created_at" timestamptz not null default now(), "deleted_at" timestamptz null, "user_id" char(26) not null, "announcement_id" char(26) not null, "is_read" boolean not null default false, constraint "user_announcements_pkey" primary key ("id"));`);
this.addSql(`alter table "user_announcements" add constraint "user_announcements_user_id_foreign" foreign key ("user_id") references "users" ("id") on update cascade on delete cascade;`);
this.addSql(`alter table "user_announcements" add constraint "user_announcements_announcement_id_foreign" foreign key ("announcement_id") references "announcements" ("id") on update cascade on delete cascade;`);
this.addSql(`alter table "permissions" drop constraint if exists "permissions_name_check";`);
this.addSql(`alter table "permissions" add constraint "permissions_name_check" check("name" in ('manage_products', 'manage_categories', 'view_requests', 'delete_request', 'update_request', 'view_invoices', 'create_invoice', 'update_invoice', 'delete_invoice', 'view_all_invoiced_orders', 'view_my_assigned_invoiced_requests', 'view_orders', 'view_assigned_orders', 'create_order', 'update_order', 'assign_designer', 'delete_order', 'manage_admins', 'manage_roles', 'manage_users', 'manage_payments', 'manage_settings', 'manage_form_builder', 'create_print', 'view_print', 'manage_learnings', 'manage_criticisms', 'manage_announcements'));`);
}
override async down(): Promise<void> {
this.addSql(`alter table "permissions" drop constraint if exists "permissions_name_check";`);
this.addSql(`alter table "permissions" add constraint "permissions_name_check" check("name" in ('manage_products', 'manage_categories', 'view_requests', 'delete_request', 'update_request', 'view_invoices', 'create_invoice', 'update_invoice', 'delete_invoice', 'view_all_invoiced_orders', 'view_my_assigned_invoiced_requests', 'view_orders', 'view_assigned_orders', 'create_order', 'update_order', 'assign_designer', 'delete_order', 'manage_admins', 'manage_roles', 'manage_users', 'manage_payments', 'manage_settings', 'manage_form_builder', 'create_print', 'view_print', 'manage_learnings', 'manage_criticisms'));`);
this.addSql(`drop table if exists "user_announcements";`);
this.addSql(`drop table if exists "announcements";`);
}
}