Commit 058d325e authored by Yechang's avatar Yechang
Browse files

feat(judge): processes

parent d50a69e6
Loading
Loading
Loading
Loading
Loading
+31 −31
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ primary_region = 'hkg'
release_command = 'npx prisma migrate deploy'

[env]
  CLIENT_ID="19a8aebc-6626-492f-8112-ec0ec05f7ba5"
CLIENT_ID = "f90e377c-ce41-48f4-a87f-48105f96b28c"
CLIENT_CALLBACK = "https://lms.sustech.cloud/auth/callback"

MINIO_HOST = "mirrors.sustech.edu.cn"
@@ -23,7 +23,7 @@ primary_region = 'hkg'
MINIO_BUCKET = "mirrors3-ioj"

QINIU_AK = "AGgqR42nMMQ8eXztPE-7D7f0gdpptLAFl3BFVo-f"
  QINIU_CALLBACK_URL="https://lms.fly.dev/api/storage/callback"
QINIU_CALLBACK_URL = "https://lms.sustech.cloud/api/storage/callback"

[http_service]
internal_port = 3000
+4 −4
Original line number Diff line number Diff line
@@ -52,13 +52,13 @@
		"prettier-plugin-svelte": "^3.1.2",
		"prettier-plugin-tailwindcss": "^0.5.9",
		"prism-themes": "^1.9.0",
		"prisma": "^5.12.1",
		"prisma": "^5.19.0",
		"prismjs": "^1.29.0",
		"refractor": "^4.8.1",
		"svelte": "^4.2.7",
		"svelte-check": "^3.6.0",
		"svelte-headless-table": "^0.18.2",
		"sveltekit-superforms": "^2.16.1",
		"sveltekit-superforms": "^2.17.0",
		"tailwindcss": "^3.3.6",
		"ts-node": "^10.9.2",
		"tslib": "^2.4.1",
@@ -68,7 +68,7 @@
		"vite-tsconfig-paths": "^4.3.2",
		"vitest": "^1.6.0",
		"vitest-mock-extended": "^1.3.1",
		"zod": "^3.22.4"
		"zod": "^3.23.8"
	},
	"type": "module",
	"dependencies": {
@@ -86,7 +86,7 @@
		"@milkdown/prose": "^7.3.5",
		"@milkdown/theme-nord": "^7.3.5",
		"@milkdown/transformer": "^7.3.5",
		"@prisma/client": "5.12.1",
		"@prisma/client": "5.19.0",
		"@sentry/sveltekit": "^7.109.0",
		"@tiptap/core": "^2.2.4",
		"@tiptap/extension-collaboration": "^2.2.4",
+55 −59
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ importers:
        version: 3.5.2
      '@lucia-auth/adapter-prisma':
        specifier: ^4.0.0
        version: 4.0.0(@prisma/client@5.12.1(prisma@5.12.1))(lucia@3.0.1)
        version: 4.0.0(@prisma/client@5.19.0(prisma@5.19.0))(lucia@3.0.1)
      '@milkdown/core':
        specifier: ^7.3.5
        version: 7.3.5(@milkdown/ctx@7.3.5)(@milkdown/prose@7.3.5)(@milkdown/transformer@7.3.5(@milkdown/prose@7.3.5))
@@ -51,8 +51,8 @@ importers:
        specifier: ^7.3.5
        version: 7.3.5(@milkdown/prose@7.3.5)
      '@prisma/client':
        specifier: 5.12.1
        version: 5.12.1(prisma@5.12.1)
        specifier: 5.19.0
        version: 5.19.0(prisma@5.19.0)
      '@sentry/sveltekit':
        specifier: ^7.109.0
        version: 7.109.0(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)
@@ -91,7 +91,7 @@ importers:
        version: 1.2.4
      formsnap:
        specifier: ^0.5.1
        version: 0.5.1(svelte@4.2.12)(sveltekit-superforms@2.16.1(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12))
        version: 0.5.1(svelte@4.2.12)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12))
      github-markdown-css:
        specifier: ^5.5.1
        version: 5.5.1
@@ -247,8 +247,8 @@ importers:
        specifier: ^1.9.0
        version: 1.9.0
      prisma:
        specifier: ^5.12.1
        version: 5.12.1
        specifier: ^5.19.0
        version: 5.19.0
      prismjs:
        specifier: ^1.29.0
        version: 1.29.0
@@ -265,8 +265,8 @@ importers:
        specifier: ^0.18.2
        version: 0.18.2(svelte@4.2.12)
      sveltekit-superforms:
        specifier: ^2.16.1
        version: 2.16.1(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)
        specifier: ^2.17.0
        version: 2.17.0(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)
      tailwindcss:
        specifier: ^3.3.6
        version: 3.4.1(ts-node@10.9.2(@types/node@20.11.24)(typescript@5.3.3))
@@ -295,8 +295,8 @@ importers:
        specifier: ^1.3.1
        version: 1.3.1(typescript@5.3.3)(vitest@1.6.0(@types/node@20.11.24)(sass@1.71.1))
      zod:
        specifier: ^3.22.4
        version: 3.22.4
        specifier: ^3.23.8
        version: 3.23.8

packages:

@@ -1300,8 +1300,8 @@ packages:
    resolution: {integrity: sha512-bO3+rnqGhE+gdx4DOyYjY9jCm2+c5Ncyl2Gmst0w271rIFnsB00btonpdmAqvFNzS8rcas+APGm+47fYMmkpQA==}
    engines: {node: '>=18.16.0'}

  '@prisma/client@5.12.1':
    resolution: {integrity: sha512-6/JnizEdlSBxDIdiLbrBdMW5NqDxOmhXAJaNXiPpgzAPr/nLZResT6MMpbOHLo5yAbQ1Vv5UU8PTPRzb0WIxdA==}
  '@prisma/client@5.19.0':
    resolution: {integrity: sha512-CzOpau+q1kEWQyoQMvlnXIHqPvwmWbh48xZ4n8KWbAql0p8PC0BIgSTYW5ncxXa4JSEff0tcoxSZB874wDstdg==}
    engines: {node: '>=16.13'}
    peerDependencies:
      prisma: '*'
@@ -1309,20 +1309,20 @@ packages:
      prisma:
        optional: true

  '@prisma/debug@5.12.1':
    resolution: {integrity: sha512-kd/wNsR0klrv79o1ITsbWxYyh4QWuBidvxsXSParPsYSu0ircUmNk3q4ojsgNc3/81b0ozg76iastOG43tbf8A==}
  '@prisma/debug@5.19.0':
    resolution: {integrity: sha512-+b/G0ubAZlrS+JSiDhXnYV5DF/aTJ3pinktkiV/L4TtLRLZO6SVGyFELgxBsicCTWJ2ZMu5vEV/jTtYCdjFTRA==}

  '@prisma/engines-version@5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab':
    resolution: {integrity: sha512-6yvO8s80Tym61aB4QNtYZfWVmE3pwqe807jEtzm8C5VDe7nw8O1FGX3TXUaXmWV0fQTIAfRbeL2Gwrndabp/0g==}
  '@prisma/engines-version@5.19.0-31.5fe21811a6ba0b952a3bc71400666511fe3b902f':
    resolution: {integrity: sha512-GimI9aZIFy/yvvR11KfXRn3pliFn1QAkdebVlsXlnoh5uk0YhLblVmeYiHfsu+wDA7BeKqYT4sFfzg8mutzuWw==}

  '@prisma/engines@5.12.1':
    resolution: {integrity: sha512-HQDdglLw2bZR/TXD2Y+YfDMvi5Q8H+acbswqOsWyq9pPjBLYJ6gzM+ptlTU/AV6tl0XSZLU1/7F4qaWa8bqpJA==}
  '@prisma/engines@5.19.0':
    resolution: {integrity: sha512-UtW+0m4HYoRSSR3LoDGKF3Ud4BSMWYlLEt4slTnuP1mI+vrV3zaDoiAPmejdAT76vCN5UqnWURbkXxf66nSylQ==}

  '@prisma/fetch-engine@5.12.1':
    resolution: {integrity: sha512-qSs3KcX1HKcea1A+hlJVK/ljj0PNIUHDxAayGMvgJBqmaN32P9tCidlKz1EGv6WoRFICYnk3Dd/YFLBwnFIozA==}
  '@prisma/fetch-engine@5.19.0':
    resolution: {integrity: sha512-oOiPNtmJX0cP/ebu7BBEouJvCw8T84/MFD/Hf2zlqjxkK4ojl38bB9i9J5LAxotL6WlYVThKdxc7HqoWnPOhqQ==}

  '@prisma/get-platform@5.12.1':
    resolution: {integrity: sha512-pgIR+pSvhYHiUcqXVEZS31NrFOTENC9yFUdEAcx7cdQBoZPmHVjtjN4Ss6NzVDMYPrKJJ51U14EhEoeuBlMioQ==}
  '@prisma/get-platform@5.19.0':
    resolution: {integrity: sha512-s9DWkZKnuP4Y8uy6yZfvqQ/9X3/+2KYf3IZUVZz5OstJdGBJrBlbmIuMl81917wp5TuK/1k2TpHNCEdpYLPKmg==}

  '@remirror/core-constants@2.0.2':
    resolution: {integrity: sha512-dyHY+sMF0ihPus3O27ODd4+agdHMEmuRdyiZJ2CCWjPV5UFmn17ZbElvk6WOGVE4rdCJKZQCrPV2BcikOMLUGQ==}
@@ -4173,8 +4173,8 @@ packages:
  prism-themes@1.9.0:
    resolution: {integrity: sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==}

  prisma@5.12.1:
    resolution: {integrity: sha512-SkMnb6wyIxTv9ACqiHBI2u9gD6y98qXRoCoLEnZsF6yee5Qg828G+ARrESN+lQHdw4maSZFFSBPPDpvSiVTo0Q==}
  prisma@5.19.0:
    resolution: {integrity: sha512-Pu7lUKpVyTx8cVwM26dYh8NdvMOkMnJXzE8L6cikFuR4JwyMU5NKofQkWyxJKlTT4fNjmcnibTvklV8oVMrn+g==}
    engines: {node: '>=16.13'}
    hasBin: true

@@ -4700,8 +4700,8 @@ packages:
    resolution: {integrity: sha512-d8+wsh5TfPwqVzbm4/HCXC783/KPHV60NvwitJnyTA5lWn1elhXMNWhXGCJ7PwPa8qFUnyJNIyuIRt2mT0WMug==}
    engines: {node: '>=16'}

  sveltekit-superforms@2.16.1:
    resolution: {integrity: sha512-RNBdN43xge/ADmc3s7+pfdnRGuZ9gZiqpX6VKAQCnCI+ICc5rrPv5idYbx4iuY1Ia0lRMAq1hP0x2oHaPjB+Kg==}
  sveltekit-superforms@2.17.0:
    resolution: {integrity: sha512-QrX8pkcmE0XoeVU42zMhsah4FoDrgtPc/4cZEr38rDlgU+DE0xNc5J0E7z1456sUJNbFjaB0+HZwwAkX0vYqaA==}
    peerDependencies:
      '@sveltejs/kit': 1.x || 2.x
      svelte: 3.x || 4.x || >=5.0.0-next.51
@@ -4798,8 +4798,8 @@ packages:
    peerDependencies:
      typescript: '>=4.2.0'

  ts-deepmerge@7.0.0:
    resolution: {integrity: sha512-WZ/iAJrKDhdINv1WG6KZIGHrZDar6VfhftG1QJFpVbOYZMYJLJOvZOo1amictRXVdBXZIgBHKswMTXzElngprA==}
  ts-deepmerge@7.0.1:
    resolution: {integrity: sha512-JBFCmNenZdUCc+TRNCtXVM6N8y/nDQHAcpj5BlwXG/gnogjam1NunulB9ia68mnqYI446giMfpqeBFFkOleh+g==}
    engines: {node: '>=14.13.1'}

  ts-essentials@9.4.2:
@@ -5216,9 +5216,6 @@ packages:
    peerDependencies:
      zod: ^3.23.3

  zod@3.22.4:
    resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}

  zod@3.23.8:
    resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}

@@ -5693,9 +5690,9 @@ snapshots:
      '@jridgewell/resolve-uri': 3.1.2
      '@jridgewell/sourcemap-codec': 1.4.15

  '@lucia-auth/adapter-prisma@4.0.0(@prisma/client@5.12.1(prisma@5.12.1))(lucia@3.0.1)':
  '@lucia-auth/adapter-prisma@4.0.0(@prisma/client@5.19.0(prisma@5.19.0))(lucia@3.0.1)':
    dependencies:
      '@prisma/client': 5.12.1(prisma@5.12.1)
      '@prisma/client': 5.19.0(prisma@5.19.0)
      lucia: 3.0.1

  '@melt-ui/svelte@0.61.2(svelte@4.2.12)':
@@ -6160,30 +6157,30 @@ snapshots:
  '@poppinss/macroable@1.0.1':
    optional: true

  '@prisma/client@5.12.1(prisma@5.12.1)':
  '@prisma/client@5.19.0(prisma@5.19.0)':
    optionalDependencies:
      prisma: 5.12.1
      prisma: 5.19.0

  '@prisma/debug@5.12.1': {}
  '@prisma/debug@5.19.0': {}

  '@prisma/engines-version@5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab': {}
  '@prisma/engines-version@5.19.0-31.5fe21811a6ba0b952a3bc71400666511fe3b902f': {}

  '@prisma/engines@5.12.1':
  '@prisma/engines@5.19.0':
    dependencies:
      '@prisma/debug': 5.12.1
      '@prisma/engines-version': 5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab
      '@prisma/fetch-engine': 5.12.1
      '@prisma/get-platform': 5.12.1
      '@prisma/debug': 5.19.0
      '@prisma/engines-version': 5.19.0-31.5fe21811a6ba0b952a3bc71400666511fe3b902f
      '@prisma/fetch-engine': 5.19.0
      '@prisma/get-platform': 5.19.0

  '@prisma/fetch-engine@5.12.1':
  '@prisma/fetch-engine@5.19.0':
    dependencies:
      '@prisma/debug': 5.12.1
      '@prisma/engines-version': 5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab
      '@prisma/get-platform': 5.12.1
      '@prisma/debug': 5.19.0
      '@prisma/engines-version': 5.19.0-31.5fe21811a6ba0b952a3bc71400666511fe3b902f
      '@prisma/get-platform': 5.19.0

  '@prisma/get-platform@5.12.1':
  '@prisma/get-platform@5.19.0':
    dependencies:
      '@prisma/debug': 5.12.1
      '@prisma/debug': 5.19.0

  '@remirror/core-constants@2.0.2': {}

@@ -7813,11 +7810,11 @@ snapshots:
      combined-stream: 1.0.8
      mime-types: 2.1.35

  formsnap@0.5.1(svelte@4.2.12)(sveltekit-superforms@2.16.1(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)):
  formsnap@0.5.1(svelte@4.2.12)(sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)):
    dependencies:
      nanoid: 5.0.6
      svelte: 4.2.12
      sveltekit-superforms: 2.16.1(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)
      sveltekit-superforms: 2.17.0(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)

  formstream@1.3.1:
    dependencies:
@@ -9314,9 +9311,11 @@ snapshots:

  prism-themes@1.9.0: {}

  prisma@5.12.1:
  prisma@5.19.0:
    dependencies:
      '@prisma/engines': 5.12.1
      '@prisma/engines': 5.19.0
    optionalDependencies:
      fsevents: 2.3.3

  prismjs@1.29.0: {}

@@ -9941,14 +9940,14 @@ snapshots:
      magic-string: 0.30.8
      periscopic: 3.1.0

  sveltekit-superforms@2.16.1(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12):
  sveltekit-superforms@2.17.0(@sveltejs/kit@2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12):
    dependencies:
      '@sveltejs/kit': 2.5.2(@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1)))(svelte@4.2.12)(vite@5.1.5(@types/node@20.11.24)(sass@1.71.1))
      devalue: 5.0.0
      just-clone: 6.2.0
      memoize-weak: 1.0.2
      svelte: 4.2.12
      ts-deepmerge: 7.0.0
      ts-deepmerge: 7.0.1
    optionalDependencies:
      '@exodus/schemasafe': 1.3.0
      '@gcornut/valibot-json-schema': 0.31.0
@@ -10070,7 +10069,7 @@ snapshots:
    dependencies:
      typescript: 5.3.3

  ts-deepmerge@7.0.0: {}
  ts-deepmerge@7.0.1: {}

  ts-essentials@9.4.2(typescript@5.3.3):
    optionalDependencies:
@@ -10511,9 +10510,6 @@ snapshots:
      zod: 3.23.8
    optional: true

  zod@3.22.4: {}

  zod@3.23.8:
    optional: true
  zod@3.23.8: {}

  zwitch@2.0.4: {}
+10 −5
Original line number Diff line number Diff line
const tailwindcss = require('tailwindcss');
const autoprefixer = require('autoprefixer');
const cssnano = require('cssnano');

const config = {
	plugins: [
		require('cssnano')({
			preset: 'default'
		}),

		//Some plugins, like tailwindcss/nesting, need to run before Tailwind,
		tailwindcss(),

		//But others, like autoprefixer, need to run after,
		autoprefixer
		autoprefixer,

		...(process.env.NODE_ENV === 'production'
			? [
					cssnano({
						preset: 'default'
					})
				]
			: [])
	]
};

+102 −0
Original line number Diff line number Diff line
-- CreateEnum
CREATE TYPE "ProcessStatus" AS ENUM ('QUEUED', 'IN_PROGRESS', 'COMPLETED', 'FAILED');

-- CreateEnum
CREATE TYPE "ExecutionStatus" AS ENUM ('IN_PROGRESS', 'COMPLETED', 'FAILED', 'CANCELLED');

-- CreateTable
CREATE TABLE "Program" (
    "id" SERIAL NOT NULL,
    "name" TEXT NOT NULL,
    "description" TEXT,
    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updatedAt" TIMESTAMP(3) NOT NULL,

    CONSTRAINT "Program_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE "Process" (
    "id" SERIAL NOT NULL,
    "programId" INTEGER NOT NULL,
    "name" TEXT NOT NULL,
    "status" "ProcessStatus" NOT NULL DEFAULT 'QUEUED',
    "parameters" JSONB NOT NULL,
    "result" JSONB,
    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updatedAt" TIMESTAMP(3) NOT NULL,

    CONSTRAINT "Process_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE "Execution" (
    "id" SERIAL NOT NULL,
    "name" TEXT NOT NULL,
    "processId" INTEGER NOT NULL,
    "executorId" INTEGER NOT NULL,
    "status" "ExecutionStatus" NOT NULL DEFAULT 'IN_PROGRESS',
    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updatedAt" TIMESTAMP(3) NOT NULL,

    CONSTRAINT "Execution_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE "Executor" (
    "id" SERIAL NOT NULL,
    "name" TEXT NOT NULL,
    "accessKey" TEXT NOT NULL,
    "secretKey" TEXT NOT NULL,
    "userId" INTEGER NOT NULL,
    "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "updatedAt" TIMESTAMP(3) NOT NULL,

    CONSTRAINT "Executor_pkey" PRIMARY KEY ("id")
);

-- CreateTable
CREATE TABLE "ProcessLog" (
    "id" SERIAL NOT NULL,
    "processId" INTEGER NOT NULL,
    "status" "ProcessStatus" NOT NULL,
    "timestamp" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,

    CONSTRAINT "ProcessLog_pkey" PRIMARY KEY ("id")
);

-- CreateIndex
CREATE UNIQUE INDEX "Program_name_key" ON "Program"("name");

-- CreateIndex
CREATE UNIQUE INDEX "Process_name_key" ON "Process"("name");

-- CreateIndex
CREATE INDEX "Process_programId_status_idx" ON "Process"("programId", "status");

-- CreateIndex
CREATE UNIQUE INDEX "Execution_name_key" ON "Execution"("name");

-- CreateIndex
CREATE INDEX "Execution_processId_status_idx" ON "Execution"("processId", "status");

-- CreateIndex
CREATE UNIQUE INDEX "Executor_name_key" ON "Executor"("name");

-- CreateIndex
CREATE INDEX "ProcessLog_processId_idx" ON "ProcessLog"("processId");

-- AddForeignKey
ALTER TABLE "Process" ADD CONSTRAINT "Process_programId_fkey" FOREIGN KEY ("programId") REFERENCES "Program"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "Execution" ADD CONSTRAINT "Execution_processId_fkey" FOREIGN KEY ("processId") REFERENCES "Process"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "Execution" ADD CONSTRAINT "Execution_executorId_fkey" FOREIGN KEY ("executorId") REFERENCES "Executor"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "Executor" ADD CONSTRAINT "Executor_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "ProcessLog" ADD CONSTRAINT "ProcessLog_processId_fkey" FOREIGN KEY ("processId") REFERENCES "Process"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
Loading