This commit is contained in:
Milo Schwartz 2025-02-14 20:22:26 -05:00
parent a35e24bc0e
commit 62238948e0
No known key found for this signature in database
2 changed files with 37 additions and 10 deletions

View file

@ -1,12 +1,26 @@
import { InferSelectModel } from "drizzle-orm";
import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
export const domains = sqliteTable("domains", {
domainId: integer("domainId").primaryKey({ autoIncrement: true }),
baseDomain: text("domain").notNull().unique()
});
export const orgs = sqliteTable("orgs", {
orgId: text("orgId").primaryKey(),
name: text("name").notNull(),
domain: text("domain").notNull()
});
export const orgDomains = sqliteTable("orgDomains", {
orgId: text("orgId")
.notNull()
.references(() => orgs.orgId, { onDelete: "cascade" }),
domainId: integer("domainId")
.notNull()
.references(() => domains.domainId, { onDelete: "cascade" })
});
export const sites = sqliteTable("sites", {
siteId: integer("siteId").primaryKey({ autoIncrement: true }),
orgId: text("orgId")
@ -43,6 +57,9 @@ export const resources = sqliteTable("resources", {
name: text("name").notNull(),
subdomain: text("subdomain"),
fullDomain: text("fullDomain"),
domainId: integer("domainId").references(() => domains.domainId, {
onDelete: "set null"
}),
ssl: integer("ssl", { mode: "boolean" }).notNull().default(false),
blockAccess: integer("blockAccess", { mode: "boolean" })
.notNull()
@ -55,7 +72,9 @@ export const resources = sqliteTable("resources", {
.notNull()
.default(false),
isBaseDomain: integer("isBaseDomain", { mode: "boolean" }),
applyRules: integer("applyRules", { mode: "boolean" }).notNull().default(false)
applyRules: integer("applyRules", { mode: "boolean" })
.notNull()
.default(false)
});
export const targets = sqliteTable("targets", {

View file

@ -34,15 +34,27 @@ const configSchema = z.object({
.transform(getEnvOrYaml("APP_DASHBOARDURL"))
.pipe(z.string().url())
.transform((url) => url.toLowerCase()),
base_domain: hostnameSchema
.optional()
.transform(getEnvOrYaml("APP_BASEDOMAIN"))
.pipe(hostnameSchema)
.transform((url) => url.toLowerCase()),
log_level: z.enum(["debug", "info", "warn", "error"]),
save_logs: z.boolean(),
log_failed_attempts: z.boolean().optional()
}),
domains: z
.array(
z.object({
base_domain: hostnameSchema.transform((url) =>
url.toLowerCase()
)
})
)
.refine(
(data) => {
const baseDomains = data.map((d) => d.base_domain);
return new Set(baseDomains).size === baseDomains.length;
},
{
message: "Base domains must be unique"
}
),
server: z.object({
external_port: portSchema
.optional()
@ -283,10 +295,6 @@ export class Config {
return this.rawConfig;
}
public getBaseDomain(): string {
return this.rawConfig.app.base_domain;
}
public getNoReplyEmail(): string | undefined {
return (
this.rawConfig.email?.no_reply || this.rawConfig.email?.smtp_user