diff --git a/backend/prisma/migrations/20260313000000_init/migration.sql b/backend/prisma/migrations/20260313000000_init/migration.sql new file mode 100644 index 0000000..f6e6372 --- /dev/null +++ b/backend/prisma/migrations/20260313000000_init/migration.sql @@ -0,0 +1,121 @@ +-- CreateSchema +CREATE SCHEMA IF NOT EXISTS "public"; + +-- CreateEnum +CREATE TYPE "Protocol" AS ENUM ('ssh', 'rdp'); + +-- CreateEnum +CREATE TYPE "CredentialType" AS ENUM ('password', 'ssh_key'); + +-- CreateTable +CREATE TABLE "users" ( + "id" SERIAL NOT NULL, + "email" TEXT NOT NULL, + "password_hash" TEXT NOT NULL, + "display_name" TEXT, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "users_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "host_groups" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "parent_id" INTEGER, + "sort_order" INTEGER NOT NULL DEFAULT 0, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "host_groups_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "hosts" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "hostname" TEXT NOT NULL, + "port" INTEGER NOT NULL DEFAULT 22, + "protocol" "Protocol" NOT NULL DEFAULT 'ssh', + "group_id" INTEGER, + "credential_id" INTEGER, + "tags" TEXT[] DEFAULT ARRAY[]::TEXT[], + "notes" TEXT, + "color" VARCHAR(7), + "sort_order" INTEGER NOT NULL DEFAULT 0, + "host_fingerprint" TEXT, + "last_connected_at" TIMESTAMP(3), + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "hosts_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "credentials" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "username" TEXT, + "domain" TEXT, + "type" "CredentialType" NOT NULL, + "encrypted_value" TEXT, + "ssh_key_id" INTEGER, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "credentials_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "ssh_keys" ( + "id" SERIAL NOT NULL, + "name" TEXT NOT NULL, + "key_type" VARCHAR(20) NOT NULL, + "fingerprint" TEXT, + "public_key" TEXT, + "encrypted_private_key" TEXT NOT NULL, + "passphrase_encrypted" TEXT, + "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "ssh_keys_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "connection_logs" ( + "id" SERIAL NOT NULL, + "host_id" INTEGER NOT NULL, + "protocol" "Protocol" NOT NULL, + "connected_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "disconnected_at" TIMESTAMP(3), + + CONSTRAINT "connection_logs_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "settings" ( + "key" TEXT NOT NULL, + "value" TEXT NOT NULL, + + CONSTRAINT "settings_pkey" PRIMARY KEY ("key") +); + +-- CreateIndex +CREATE UNIQUE INDEX "users_email_key" ON "users"("email"); + +-- AddForeignKey +ALTER TABLE "host_groups" ADD CONSTRAINT "host_groups_parent_id_fkey" FOREIGN KEY ("parent_id") REFERENCES "host_groups"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "hosts" ADD CONSTRAINT "hosts_group_id_fkey" FOREIGN KEY ("group_id") REFERENCES "host_groups"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "hosts" ADD CONSTRAINT "hosts_credential_id_fkey" FOREIGN KEY ("credential_id") REFERENCES "credentials"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "credentials" ADD CONSTRAINT "credentials_ssh_key_id_fkey" FOREIGN KEY ("ssh_key_id") REFERENCES "ssh_keys"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "connection_logs" ADD CONSTRAINT "connection_logs_host_id_fkey" FOREIGN KEY ("host_id") REFERENCES "hosts"("id") ON DELETE CASCADE ON UPDATE CASCADE; + diff --git a/backend/prisma/migrations/migration_lock.toml b/backend/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..99e4f20 --- /dev/null +++ b/backend/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "postgresql"