Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions libs/metrics/src/metrics.controller.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { Controller, Get, Res } from '@nestjs/common';
import * as client from 'prom-client';
import { FastifyReply } from 'fastify';
import { SkipZodValidation } from '@shared/decorators';
import { SkipContractHandle } from '@shared/decorators';

@Controller('metrics')
export class MetricsController {
@Get()
@SkipZodValidation()
@SkipContractHandle()
async getMetrics(@Res() reply: FastifyReply) {
const metrics = await client.register.metrics();
reply.type(client.register.contentType).send(metrics);
Expand Down
2 changes: 1 addition & 1 deletion migrations/0000_stale_sunspot.sql
Original file line number Diff line number Diff line change
@@ -1 +1 @@
CREATE SCHEMA "base";
CREATE SCHEMA "base";
101 changes: 86 additions & 15 deletions migrations/0006_absent_doctor_doom.sql
Original file line number Diff line number Diff line change
@@ -1,15 +1,86 @@
ALTER TABLE "base"."team_members" ALTER COLUMN "joined_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."team_members" ALTER COLUMN "created_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."team_members" ALTER COLUMN "created_at" SET DEFAULT now();
ALTER TABLE "base"."teams" ALTER COLUMN "created_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."teams" ALTER COLUMN "created_at" SET DEFAULT now();
ALTER TABLE "base"."teams" ALTER COLUMN "updated_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."teams" ALTER COLUMN "updated_at" SET DEFAULT now();
ALTER TABLE "base"."teams" ALTER COLUMN "deleted_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."project_shares" ALTER COLUMN "created_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."project_shares" ALTER COLUMN "created_at" SET DEFAULT now();
ALTER TABLE "base"."projects" ALTER COLUMN "created_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."projects" ALTER COLUMN "created_at" SET DEFAULT now();
ALTER TABLE "base"."projects" ALTER COLUMN "updated_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."projects" ALTER COLUMN "updated_at" SET DEFAULT now();
ALTER TABLE "base"."projects" ALTER COLUMN "deleted_at" SET DATA TYPE timestamp with time zone;
ALTER TABLE "base"."team_members"
ALTER COLUMN "joined_at"
SET
DATA TYPE timestamp
with
time zone;

ALTER TABLE "base"."team_members"
ALTER COLUMN "created_at"
SET
DATA TYPE timestamp
with
time zone;

ALTER TABLE "base"."team_members"
ALTER COLUMN "created_at"
SET DEFAULT now ();

ALTER TABLE "base"."teams"
ALTER COLUMN "created_at"
SET
DATA TYPE timestamp
with
time zone;

ALTER TABLE "base"."teams"
ALTER COLUMN "created_at"
SET DEFAULT now ();

ALTER TABLE "base"."teams"
ALTER COLUMN "updated_at"
SET
DATA TYPE timestamp
with
time zone;

ALTER TABLE "base"."teams"
ALTER COLUMN "updated_at"
SET DEFAULT now ();

ALTER TABLE "base"."teams"
ALTER COLUMN "deleted_at"
SET
DATA TYPE timestamp
with
time zone;

ALTER TABLE "base"."project_shares"
ALTER COLUMN "created_at"
SET
DATA TYPE timestamp
with
time zone;

ALTER TABLE "base"."project_shares"
ALTER COLUMN "created_at"
SET DEFAULT now ();

ALTER TABLE "base"."projects"
ALTER COLUMN "created_at"
SET
DATA TYPE timestamp
with
time zone;

ALTER TABLE "base"."projects"
ALTER COLUMN "created_at"
SET DEFAULT now ();

ALTER TABLE "base"."projects"
ALTER COLUMN "updated_at"
SET
DATA TYPE timestamp
with
time zone;

ALTER TABLE "base"."projects"
ALTER COLUMN "updated_at"
SET DEFAULT now ();

ALTER TABLE "base"."projects"
ALTER COLUMN "deleted_at"
SET
DATA TYPE timestamp
with
time zone;
13 changes: 11 additions & 2 deletions migrations/0009_true_avengers.sql
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
ALTER TABLE "base"."tags" DISABLE ROW LEVEL SECURITY;

ALTER TABLE "base"."teams_to_tags" DISABLE ROW LEVEL SECURITY;

DROP TABLE "base"."tags" CASCADE;

DROP TABLE "base"."teams_to_tags" CASCADE;
ALTER TABLE "base"."teams" DROP CONSTRAINT "teams_slug_unique";

ALTER TABLE "base"."teams"
DROP CONSTRAINT "teams_slug_unique";

DROP INDEX "base"."team_active_slug_idx";

DROP INDEX "base"."team_slug_idx";
ALTER TABLE "base"."teams" DROP COLUMN "slug";

ALTER TABLE "base"."teams"
DROP COLUMN "slug";
109 changes: 109 additions & 0 deletions migrations/0010_sour_praxagora.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
CREATE TYPE "base"."layout_type" AS ENUM ('kanban', 'list', 'calendar', 'gantt');

ALTER TYPE "base"."project_status" ADD VALUE 'deleted';

CREATE TABLE
"base"."project_members" (
"id" text PRIMARY KEY NOT NULL,
"project_id" text NOT NULL,
"user_id" text NOT NULL,
"role" varchar(20) DEFAULT 'member' NOT NULL,
"added_by" text,
"created_at" timestamp
with
time zone DEFAULT now () NOT NULL
);

CREATE TABLE
"base"."project_settings" (
"id" text PRIMARY KEY NOT NULL,
"project_id" text NOT NULL,
"default_view" "base"."layout_type" DEFAULT 'kanban' NOT NULL,
"task_prefix" varchar(10),
"auto_close_days" integer,
"max_tasks_per_area" integer,
"max_members" integer,
"max_areas" integer,
"allow_guests" boolean DEFAULT false,
"time_tracking" boolean DEFAULT false,
"time_tracking_mode" varchar(20) DEFAULT 'optional',
"default_assignee_id" text,
"created_at" timestamp
with
time zone DEFAULT now () NOT NULL,
"updated_at" timestamp
with
time zone DEFAULT now () NOT NULL,
CONSTRAINT "project_settings_project_id_unique" UNIQUE ("project_id")
);

ALTER TABLE "base"."board_columns" DISABLE ROW LEVEL SECURITY;

ALTER TABLE "base"."boards_views" DISABLE ROW LEVEL SECURITY;

ALTER TABLE "base"."boards" DISABLE ROW LEVEL SECURITY;

DROP TABLE "base"."board_columns" CASCADE;

DROP TABLE "base"."boards_views" CASCADE;

DROP TABLE "base"."boards" CASCADE;

DROP INDEX "base"."project_team_key_idx";

DROP INDEX "base"."project_team_name_idx";

ALTER TABLE "base"."project_shares"
ALTER COLUMN "created_by"
DROP NOT NULL;

ALTER TABLE "base"."users"
ADD COLUMN "last_team_id" text;

ALTER TABLE "base"."projects"
ADD COLUMN "slug" varchar(100) NOT NULL;

ALTER TABLE "base"."projects"
ADD COLUMN "descriptionHtml" text;

ALTER TABLE "base"."projects"
ADD COLUMN "sequence" integer DEFAULT 0;

ALTER TABLE "base"."project_members" ADD CONSTRAINT "project_members_project_id_projects_id_fk" FOREIGN KEY ("project_id") REFERENCES "base"."projects" ("id") ON DELETE cascade ON UPDATE no action;

ALTER TABLE "base"."project_members" ADD CONSTRAINT "project_members_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "base"."users" ("id") ON DELETE cascade ON UPDATE no action;

ALTER TABLE "base"."project_members" ADD CONSTRAINT "project_members_added_by_users_id_fk" FOREIGN KEY ("added_by") REFERENCES "base"."users" ("id") ON DELETE no action ON UPDATE no action;

ALTER TABLE "base"."project_settings" ADD CONSTRAINT "project_settings_project_id_projects_id_fk" FOREIGN KEY ("project_id") REFERENCES "base"."projects" ("id") ON DELETE cascade ON UPDATE no action;

ALTER TABLE "base"."project_settings" ADD CONSTRAINT "project_settings_default_assignee_id_users_id_fk" FOREIGN KEY ("default_assignee_id") REFERENCES "base"."users" ("id") ON DELETE set null ON UPDATE no action;

CREATE UNIQUE INDEX "project_member_unique_idx" ON "base"."project_members" USING btree ("project_id", "user_id");

CREATE INDEX "project_member_user_idx" ON "base"."project_members" USING btree ("user_id");

CREATE INDEX "project_member_project_idx" ON "base"."project_members" USING btree ("project_id");

CREATE UNIQUE INDEX "project_settings_project_idx" ON "base"."project_settings" USING btree ("project_id");

ALTER TABLE "base"."project_shares" ADD CONSTRAINT "project_shares_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "base"."users" ("id") ON DELETE no action ON UPDATE no action;

CREATE UNIQUE INDEX "project_team_slug_idx" ON "base"."projects" USING btree ("team_id", "slug")
WHERE
"base"."projects"."deleted_at" is null;

ALTER TABLE "base"."projects"
DROP COLUMN "key";

ALTER TABLE "base"."projects"
DROP COLUMN "task_sequence";

ALTER TABLE "base"."projects"
DROP COLUMN "settings";

ALTER TABLE "base"."projects" ADD CONSTRAINT "projects_slug_unique" UNIQUE ("slug");

DROP TYPE "base"."board_type";

DROP TYPE "base"."column_status";
5 changes: 0 additions & 5 deletions migrations/0010_yummy_runaways.sql

This file was deleted.

45 changes: 45 additions & 0 deletions migrations/0011_massive_black_queen.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
CREATE TABLE
"base"."areas" (
"id" text PRIMARY KEY NOT NULL,
"project_id" text,
"title" text NOT NULL,
"slug" varchar(100) NOT NULL,
"description" text,
"description_html" text,
"color" varchar(10),
"tasks_count" integer DEFAULT 0 NOT NULL,
"default_view" varchar(20) DEFAULT 'kanban' NOT NULL,
"icon" varchar(20),
"position" integer DEFAULT 0 NOT NULL,
"max_tasks_limit" integer,
"is_locked" boolean DEFAULT false,
"created_at" timestamp
with
time zone DEFAULT now () NOT NULL,
"updated_at" timestamp
with
time zone DEFAULT now () NOT NULL,
"created_by" text,
"deleted_at" timestamp
with
time zone,
CONSTRAINT "areas_slug_unique" UNIQUE ("slug")
);

ALTER TABLE "base"."areas" ADD CONSTRAINT "areas_project_id_projects_id_fk" FOREIGN KEY ("project_id") REFERENCES "base"."projects" ("id") ON DELETE cascade ON UPDATE no action;

ALTER TABLE "base"."areas" ADD CONSTRAINT "areas_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "base"."users" ("id") ON DELETE no action ON UPDATE no action;

CREATE INDEX "idx_areas_slug" ON "base"."areas" USING btree ("slug");

CREATE INDEX "idx_areas_project_active" ON "base"."areas" USING btree ("project_id", "position")
WHERE
"base"."areas"."deleted_at" is null;

CREATE INDEX "idx_areas_created_by" ON "base"."areas" USING btree ("created_by")
WHERE
"base"."areas"."deleted_at" is null;

CREATE INDEX "idx_areas_deleted_at" ON "base"."areas" USING btree ("deleted_at")
WHERE
"base"."areas"."deleted_at" is not null;
66 changes: 66 additions & 0 deletions migrations/0012_nasty_mandarin.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
CREATE TYPE "base"."state_category" AS ENUM (
'backlog',
'active',
'review',
'completed',
'archived'
);

CREATE TYPE "base"."state_type" AS ENUM (
'backlog',
'todo',
'in_progress',
'review',
'done',
'archived',
'custom'
);

CREATE TABLE
"base"."states" (
"id" text PRIMARY KEY NOT NULL,
"area_id" text,
"title" text NOT NULL,
"description" text,
"state_type" "state_type" DEFAULT 'custom' NOT NULL,
"category" "state_category" DEFAULT 'active' NOT NULL,
"color" varchar(10),
"icon" varchar(20),
"position" integer DEFAULT 0 NOT NULL,
"is_visible" boolean DEFAULT true NOT NULL,
"max_tasks_limit" integer,
"auto_transition_to" text,
"notify_on_enter" boolean DEFAULT false,
"notify_on_exit" boolean DEFAULT false,
"is_locked" boolean DEFAULT false,
"created_at" timestamp
with
time zone DEFAULT now () NOT NULL,
"updated_at" timestamp
with
time zone DEFAULT now () NOT NULL,
"created_by" text,
"deleted_at" timestamp
with
time zone
);

ALTER TABLE "base"."states" ADD CONSTRAINT "states_area_id_areas_id_fk" FOREIGN KEY ("area_id") REFERENCES "base"."areas" ("id") ON DELETE cascade ON UPDATE no action;

ALTER TABLE "base"."states" ADD CONSTRAINT "states_created_by_users_id_fk" FOREIGN KEY ("created_by") REFERENCES "base"."users" ("id") ON DELETE no action ON UPDATE no action;

CREATE INDEX "idx_states_position" ON "base"."states" USING btree ("area_id", "position");

CREATE INDEX "idx_states_title" ON "base"."states" USING btree ("area_id", "title");

CREATE INDEX "idx_states_created_at" ON "base"."states" USING btree ("area_id", "created_at");

CREATE INDEX "idx_states_search" ON "base"."states" USING btree ("area_id", "title");

CREATE UNIQUE INDEX "idx_states_unique_title" ON "base"."states" USING btree ("area_id", "title")
WHERE
"base"."states"."deleted_at" is null;

CREATE INDEX "idx_states_deleted_at" ON "base"."states" USING btree ("deleted_at")
WHERE
"base"."states"."deleted_at" is not null;
Loading
Loading