chore: Migrates development to use PostgreSQL instead.
This commit is contained in:
parent
2237568b92
commit
1ae93d71f6
12 changed files with 96 additions and 133 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -132,5 +132,4 @@ dist
|
||||||
.yarn/install-state.gz
|
.yarn/install-state.gz
|
||||||
.pnp.*
|
.pnp.*
|
||||||
|
|
||||||
*.db
|
.tmp
|
||||||
*.db-journal
|
|
2
dev.env
2
dev.env
|
@ -4,4 +4,4 @@
|
||||||
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
|
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
|
||||||
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
|
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
|
||||||
|
|
||||||
DATABASE_URL="file:./db/dev.db"
|
DATABASE_URL="postgresql://nextnet:nextnet@localhost:5432/nextnet?schema=nextnet"
|
33
init.sh
Executable file
33
init.sh
Executable file
|
@ -0,0 +1,33 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
if [ ! -d ".tmp" ]; then
|
||||||
|
echo "Hello and welcome to the NextNet project! Please wait while I initialize things for you..."
|
||||||
|
cp dev.env .env
|
||||||
|
mkdir .tmp
|
||||||
|
fi
|
||||||
|
|
||||||
|
lsof -i:5432 | grep postgres
|
||||||
|
IS_PG_RUNNING=$?
|
||||||
|
|
||||||
|
if [ ! -f ".tmp/ispginit" ]; then
|
||||||
|
if [[ "$IS_PG_RUNNING" == 0 ]]; then
|
||||||
|
kill -9 $(lsof -t -i:5432)
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " - Database not initialized! Initializing database..."
|
||||||
|
mkdir .tmp/pglock
|
||||||
|
|
||||||
|
initdb -D .tmp/db
|
||||||
|
pg_ctl -D .tmp/db -l .tmp/logfile -o "--unix_socket_directories='$PWD/.tmp/pglock/'" start
|
||||||
|
createdb -h localhost -p 5432 nextnet
|
||||||
|
|
||||||
|
psql -h localhost -p 5432 nextnet -c "CREATE ROLE nextnet WITH LOGIN SUPERUSER PASSWORD 'nextnet';"
|
||||||
|
|
||||||
|
npm install --save-dev
|
||||||
|
npx prisma migrate dev
|
||||||
|
|
||||||
|
touch .tmp/ispginit
|
||||||
|
elif [[ "$IS_PG_RUNNING" == 1 ]]; then
|
||||||
|
pg_ctl -D .tmp/db -l .tmp/logfile -o "--unix_socket_directories='$PWD/.tmp/pglock/'" start
|
||||||
|
fi
|
||||||
|
|
||||||
|
source .env # Make sure we actually load correctly
|
|
@ -1,43 +0,0 @@
|
||||||
-- CreateTable
|
|
||||||
CREATE TABLE "DesinationProvider" (
|
|
||||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"name" TEXT NOT NULL,
|
|
||||||
"description" TEXT,
|
|
||||||
"backend" TEXT NOT NULL,
|
|
||||||
"connectionDetails" TEXT NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- CreateTable
|
|
||||||
CREATE TABLE "ForwardRule" (
|
|
||||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"name" TEXT NOT NULL,
|
|
||||||
"description" TEXT,
|
|
||||||
"sourceIP" TEXT NOT NULL,
|
|
||||||
"sourcePort" INTEGER NOT NULL,
|
|
||||||
"destIP" TEXT NOT NULL,
|
|
||||||
"destPort" INTEGER NOT NULL,
|
|
||||||
"destProviderID" INTEGER NOT NULL,
|
|
||||||
"enabled" BOOLEAN NOT NULL
|
|
||||||
);
|
|
||||||
|
|
||||||
-- CreateTable
|
|
||||||
CREATE TABLE "Permission" (
|
|
||||||
"permissionID" TEXT NOT NULL,
|
|
||||||
"has" BOOLEAN NOT NULL,
|
|
||||||
"userID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
CONSTRAINT "Permission_userID_fkey" FOREIGN KEY ("userID") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
|
|
||||||
-- CreateTable
|
|
||||||
CREATE TABLE "User" (
|
|
||||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"email" TEXT NOT NULL,
|
|
||||||
"name" TEXT,
|
|
||||||
"rootToken" TEXT
|
|
||||||
);
|
|
||||||
|
|
||||||
-- CreateIndex
|
|
||||||
CREATE UNIQUE INDEX "Permission_permissionID_key" ON "Permission"("permissionID");
|
|
||||||
|
|
||||||
-- CreateIndex
|
|
||||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
|
@ -1,21 +0,0 @@
|
||||||
/*
|
|
||||||
Warnings:
|
|
||||||
|
|
||||||
- Added the required column `password` to the `User` table without a default value. This is not possible if the table is not empty.
|
|
||||||
|
|
||||||
*/
|
|
||||||
-- RedefineTables
|
|
||||||
PRAGMA foreign_keys=OFF;
|
|
||||||
CREATE TABLE "new_User" (
|
|
||||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"email" TEXT NOT NULL,
|
|
||||||
"name" TEXT,
|
|
||||||
"password" TEXT NOT NULL,
|
|
||||||
"rootToken" TEXT
|
|
||||||
);
|
|
||||||
INSERT INTO "new_User" ("email", "id", "name", "rootToken") SELECT "email", "id", "name", "rootToken" FROM "User";
|
|
||||||
DROP TABLE "User";
|
|
||||||
ALTER TABLE "new_User" RENAME TO "User";
|
|
||||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
||||||
PRAGMA foreign_key_check;
|
|
||||||
PRAGMA foreign_keys=ON;
|
|
|
@ -1,21 +0,0 @@
|
||||||
/*
|
|
||||||
Warnings:
|
|
||||||
|
|
||||||
- Made the column `name` on table `User` required. This step will fail if there are existing NULL values in that column.
|
|
||||||
|
|
||||||
*/
|
|
||||||
-- RedefineTables
|
|
||||||
PRAGMA foreign_keys=OFF;
|
|
||||||
CREATE TABLE "new_User" (
|
|
||||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"email" TEXT NOT NULL,
|
|
||||||
"name" TEXT NOT NULL,
|
|
||||||
"password" TEXT NOT NULL,
|
|
||||||
"rootToken" TEXT
|
|
||||||
);
|
|
||||||
INSERT INTO "new_User" ("email", "id", "name", "password", "rootToken") SELECT "email", "id", "name", "password", "rootToken" FROM "User";
|
|
||||||
DROP TABLE "User";
|
|
||||||
ALTER TABLE "new_User" RENAME TO "User";
|
|
||||||
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
|
||||||
PRAGMA foreign_key_check;
|
|
||||||
PRAGMA foreign_keys=ON;
|
|
|
@ -1,20 +0,0 @@
|
||||||
/*
|
|
||||||
Warnings:
|
|
||||||
|
|
||||||
- You are about to drop the column `permissionID` on the `Permission` table. All the data in the column will be lost.
|
|
||||||
- Added the required column `permission` to the `Permission` table without a default value. This is not possible if the table is not empty.
|
|
||||||
|
|
||||||
*/
|
|
||||||
-- RedefineTables
|
|
||||||
PRAGMA foreign_keys=OFF;
|
|
||||||
CREATE TABLE "new_Permission" (
|
|
||||||
"permission" TEXT NOT NULL,
|
|
||||||
"has" BOOLEAN NOT NULL,
|
|
||||||
"userID" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
CONSTRAINT "Permission_userID_fkey" FOREIGN KEY ("userID") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
INSERT INTO "new_Permission" ("has", "userID") SELECT "has", "userID" FROM "Permission";
|
|
||||||
DROP TABLE "Permission";
|
|
||||||
ALTER TABLE "new_Permission" RENAME TO "Permission";
|
|
||||||
PRAGMA foreign_key_check;
|
|
||||||
PRAGMA foreign_keys=ON;
|
|
|
@ -1,21 +0,0 @@
|
||||||
/*
|
|
||||||
Warnings:
|
|
||||||
|
|
||||||
- The primary key for the `Permission` table will be changed. If it partially fails, the table could be left without primary key constraint.
|
|
||||||
- Added the required column `id` to the `Permission` table without a default value. This is not possible if the table is not empty.
|
|
||||||
|
|
||||||
*/
|
|
||||||
-- RedefineTables
|
|
||||||
PRAGMA foreign_keys=OFF;
|
|
||||||
CREATE TABLE "new_Permission" (
|
|
||||||
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
||||||
"permission" TEXT NOT NULL,
|
|
||||||
"has" BOOLEAN NOT NULL,
|
|
||||||
"userID" INTEGER NOT NULL,
|
|
||||||
CONSTRAINT "Permission_userID_fkey" FOREIGN KEY ("userID") REFERENCES "User" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
||||||
);
|
|
||||||
INSERT INTO "new_Permission" ("has", "permission", "userID") SELECT "has", "permission", "userID" FROM "Permission";
|
|
||||||
DROP TABLE "Permission";
|
|
||||||
ALTER TABLE "new_Permission" RENAME TO "Permission";
|
|
||||||
PRAGMA foreign_key_check;
|
|
||||||
PRAGMA foreign_keys=ON;
|
|
53
prisma/migrations/20240421200334_init/migration.sql
Normal file
53
prisma/migrations/20240421200334_init/migration.sql
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "DesinationProvider" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"name" TEXT NOT NULL,
|
||||||
|
"description" TEXT,
|
||||||
|
"backend" TEXT NOT NULL,
|
||||||
|
"connectionDetails" TEXT NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "DesinationProvider_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "ForwardRule" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"name" TEXT NOT NULL,
|
||||||
|
"description" TEXT,
|
||||||
|
"sourceIP" TEXT NOT NULL,
|
||||||
|
"sourcePort" INTEGER NOT NULL,
|
||||||
|
"destIP" TEXT NOT NULL,
|
||||||
|
"destPort" INTEGER NOT NULL,
|
||||||
|
"destProviderID" INTEGER NOT NULL,
|
||||||
|
"enabled" BOOLEAN NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "ForwardRule_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "Permission" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"permission" TEXT NOT NULL,
|
||||||
|
"has" BOOLEAN NOT NULL,
|
||||||
|
"userID" INTEGER NOT NULL,
|
||||||
|
|
||||||
|
CONSTRAINT "Permission_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateTable
|
||||||
|
CREATE TABLE "User" (
|
||||||
|
"id" SERIAL NOT NULL,
|
||||||
|
"email" TEXT NOT NULL,
|
||||||
|
"name" TEXT NOT NULL,
|
||||||
|
"password" TEXT NOT NULL,
|
||||||
|
"rootToken" TEXT,
|
||||||
|
"isRootServiceAccount" BOOLEAN,
|
||||||
|
|
||||||
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
||||||
|
);
|
||||||
|
|
||||||
|
-- CreateIndex
|
||||||
|
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
|
||||||
|
|
||||||
|
-- AddForeignKey
|
||||||
|
ALTER TABLE "Permission" ADD CONSTRAINT "Permission_userID_fkey" FOREIGN KEY ("userID") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
@ -1,3 +1,3 @@
|
||||||
# Please do not edit this file manually
|
# Please do not edit this file manually
|
||||||
# It should be added in your version-control system (i.e. Git)
|
# It should be added in your version-control system (i.e. Git)
|
||||||
provider = "sqlite"
|
provider = "postgresql"
|
|
@ -6,7 +6,7 @@ generator client {
|
||||||
}
|
}
|
||||||
|
|
||||||
datasource db {
|
datasource db {
|
||||||
provider = "sqlite"
|
provider = "postgresql"
|
||||||
url = env("DATABASE_URL")
|
url = env("DATABASE_URL")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,6 +54,8 @@ model User {
|
||||||
|
|
||||||
password String // Will be hashed using bcrypt
|
password String // Will be hashed using bcrypt
|
||||||
|
|
||||||
rootToken String?
|
rootToken String?
|
||||||
|
isRootServiceAccount Boolean?
|
||||||
|
|
||||||
permissions Permission[]
|
permissions Permission[]
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,10 +2,12 @@ let
|
||||||
pkgs = import (fetchTarball ("channel:nixpkgs-unstable")) { };
|
pkgs = import (fetchTarball ("channel:nixpkgs-unstable")) { };
|
||||||
in
|
in
|
||||||
pkgs.mkShell {
|
pkgs.mkShell {
|
||||||
buildInputs = [ pkgs.nodejs pkgs.sqlite pkgs.openssl ];
|
buildInputs = [ pkgs.nodejs pkgs.openssl pkgs.postgresql pkgs.lsof ];
|
||||||
shellHook = ''
|
shellHook = ''
|
||||||
export PRISMA_QUERY_ENGINE_BINARY=${pkgs.prisma-engines}/bin/query-engine
|
export PRISMA_QUERY_ENGINE_BINARY=${pkgs.prisma-engines}/bin/query-engine
|
||||||
export PRISMA_QUERY_ENGINE_LIBRARY=${pkgs.prisma-engines}/lib/libquery_engine.node
|
export PRISMA_QUERY_ENGINE_LIBRARY=${pkgs.prisma-engines}/lib/libquery_engine.node
|
||||||
export PRISMA_SCHEMA_ENGINE_BINARY=${pkgs.prisma-engines}/bin/schema-engine
|
export PRISMA_SCHEMA_ENGINE_BINARY=${pkgs.prisma-engines}/bin/schema-engine
|
||||||
|
|
||||||
|
bash init.sh
|
||||||
'';
|
'';
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue