mirror of
https://github.com/fosrl/pangolin.git
synced 2025-08-03 01:24:58 +02:00
Add schema
This commit is contained in:
parent
6c91415de4
commit
22c64127f8
1 changed files with 57 additions and 8 deletions
|
@ -1,12 +1,61 @@
|
|||
import { InferSelectModel } from "drizzle-orm";
|
||||
import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
|
||||
import { InferSelectModel } from "drizzle-orm";
|
||||
|
||||
export const proxyTargets = sqliteTable("proxyTargets", {
|
||||
id: text("id").unique().notNull().primaryKey(),
|
||||
target: text("target").notNull(),
|
||||
rule: text("rule").notNull(),
|
||||
entryPoint: text("entryPoint").notNull(),
|
||||
enabled: integer("enabled", { mode: "boolean" }).notNull().default(true),
|
||||
// Org table
|
||||
export const org = sqliteTable("org", {
|
||||
orgId: integer("orgId").primaryKey({ autoIncrement: true }),
|
||||
name: text("name").notNull(),
|
||||
});
|
||||
|
||||
export type SelectProxyTargets = InferSelectModel<typeof proxyTargets>;
|
||||
// Users table
|
||||
export const users = sqliteTable("users", {
|
||||
uid: integer("uid").primaryKey({ autoIncrement: true }),
|
||||
orgId: integer("orgId").references(() => org.orgId),
|
||||
name: text("name"),
|
||||
email: text("email"),
|
||||
groups: text("groups"),
|
||||
});
|
||||
|
||||
// Sites table
|
||||
export const sites = sqliteTable("sites", {
|
||||
siteId: integer("siteId").primaryKey({ autoIncrement: true }),
|
||||
orgId: integer("orgId").references(() => org.orgId),
|
||||
name: text("name"),
|
||||
autoSubdomain: text("autoSubdomain"),
|
||||
pubKey: integer("pubKey"),
|
||||
subnet: text("subnet"),
|
||||
exitNode: integer("exitNode").references(() => exitNodes.exitNodeId),
|
||||
});
|
||||
|
||||
// Resources table
|
||||
export const resources = sqliteTable("resources", {
|
||||
resourceId: integer("resourceId").primaryKey({ autoIncrement: true }),
|
||||
siteId: integer("siteId").references(() => sites.siteId),
|
||||
name: text("name"),
|
||||
targetIp: text("targetIp"),
|
||||
method: text("method"),
|
||||
port: integer("port"),
|
||||
proto: text("proto"),
|
||||
});
|
||||
|
||||
// Exit Nodes table
|
||||
export const exitNodes = sqliteTable("exitNodes", {
|
||||
exitNodeId: integer("exitNodeId").primaryKey({ autoIncrement: true }),
|
||||
name: text("name"),
|
||||
address: integer("address"),
|
||||
});
|
||||
|
||||
// Routes table
|
||||
export const routes = sqliteTable("routes", {
|
||||
routeId: integer("routeId").primaryKey({ autoIncrement: true }),
|
||||
subnet: integer("subnet"),
|
||||
exitNodeId: integer("exitNodeId").references(() => exitNodes.exitNodeId),
|
||||
});
|
||||
|
||||
// Define the model types for type inference
|
||||
export type Org = InferSelectModel<typeof org>;
|
||||
export type User = InferSelectModel<typeof users>;
|
||||
export type Site = InferSelectModel<typeof sites>;
|
||||
export type Resource = InferSelectModel<typeof resources>;
|
||||
export type ExitNode = InferSelectModel<typeof exitNodes>;
|
||||
export type Route = InferSelectModel<typeof routes>;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue