chore: Adds initial code.

This commit is contained in:
Tera << 8 2024-04-17 00:51:53 +00:00
parent a4ea6406e6
commit 939eb0b9d7
8 changed files with 1282 additions and 17 deletions

3
.gitignore vendored
View file

@ -131,3 +131,6 @@ dist
.yarn/build-state.yml .yarn/build-state.yml
.yarn/install-state.gz .yarn/install-state.gz
.pnp.* .pnp.*
*.db
*.db-journal

7
dev.env Normal file
View file

@ -0,0 +1,7 @@
# Environment variables declared in this file are automatically made available to Prisma.
# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema
# 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
DATABASE_URL="file:./db/dev.db"

1157
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -3,6 +3,7 @@
"version": "1.0.0", "version": "1.0.0",
"description": "Base TypeScript template to use", "description": "Base TypeScript template to use",
"main": "index.js", "main": "index.js",
"type": "module",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"build": "tsc", "build": "tsc",
@ -13,7 +14,14 @@
"author": "greysoh", "author": "greysoh",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"devDependencies": { "devDependencies": {
"@types/node": "^20.12.7",
"nodemon": "^3.0.3", "nodemon": "^3.0.3",
"prisma": "^5.12.1",
"typescript": "^5.3.3" "typescript": "^5.3.3"
},
"dependencies": {
"@prisma/client": "^5.12.1",
"bcrypt": "^5.1.1",
"fastify": "^4.26.2"
} }
} }

View file

@ -0,0 +1,43 @@
-- 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");

View file

@ -0,0 +1,3 @@
# Please do not edit this file manually
# It should be added in your version-control system (i.e. Git)
provider = "sqlite"

55
prisma/schema.prisma Normal file
View file

@ -0,0 +1,55 @@
// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}
model DesinationProvider {
id Int @id @default(autoincrement())
name String
description String?
backend String
connectionDetails String
}
model ForwardRule {
id Int @id @default(autoincrement())
name String
description String?
sourceIP String
sourcePort Int
destIP String
destPort Int
destProviderID Int
enabled Boolean
}
model Permission {
permissionID String @unique
has Boolean
user User @relation(fields: [userID], references: [id])
userID Int @id @default(autoincrement())
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
rootToken String?
permissions Permission[]
}

View file

@ -1 +1,22 @@
console.log("Hello, world!"); import process from "node:process";
import { PrismaClient } from '@prisma/client';
import Fastify from "fastify";
const prisma = new PrismaClient();
const fastify = Fastify({
logger: true
});
fastify.get('/', async function handler (request, reply) {
return { hello: 'world' };
})
// Run the server!
try {
await fastify.listen({ port: 3000 });
} catch (err) {
fastify.log.error(err);
process.exit(1);
}