feat: Add member table

This commit is contained in:
Wanjohi
2025-10-26 05:05:02 +03:00
parent 16a1c8c145
commit 752f3e94d0
4 changed files with 41 additions and 8 deletions

View File

@@ -49,4 +49,11 @@ export namespace Examples {
name: "Example App",
redirectURI: "https://web.example.com/v1/callback",
};
export const Member = {
id: Id("member"),
ownerID: User.id,
orgID: Organisation.id,
role: "admin" as const,
};
}

View File

@@ -0,0 +1,22 @@
import { userTable } from "../user/user.sql.js";
import { orgTable } from "../organisation/org.sql.js";
import { pgEnum, pgTable } from "drizzle-orm/pg-core";
import { id, ulid, timestamps } from "../drizzle/types.js";
export const MemberRole = pgEnum("role", ["admin", "member", "admin"]);
export const memberTable = pgTable("members", {
...id,
...timestamps,
orgID: ulid("organisation_id")
.references(() => orgTable.id, {
onDelete: "cascade",
})
.notNull(),
ownerID: ulid("owner_id")
.references(() => userTable.id, {
onDelete: "cascade",
})
.notNull(),
role: MemberRole("role").notNull(),
});

View File

@@ -1,13 +1,15 @@
import { id, timestamps, ulid } from "../drizzle/types.js";
import { pgTable, varchar } from "drizzle-orm/pg-core";
import { userTable } from "../user/user.sql.js";
import { pgTable, varchar } from "drizzle-orm/pg-core";
import { id, timestamps, ulid } from "../drizzle/types.js";
export const orgTable = pgTable("organisations", {
...id,
...timestamps,
ownerID: ulid("owner_id").references(() => userTable.id, {
onDelete: "cascade",
}),
ownerID: ulid("owner_id")
.references(() => userTable.id, {
onDelete: "cascade",
})
.notNull(),
name: varchar("name", { length: 255 }).unique().notNull(),
slug: varchar("slug", { length: 255 }).unique().notNull(),
});

View File

@@ -32,9 +32,11 @@ export type Limitations = z.infer<typeof Limitations>;
export const steamTable = pgTable("steam_accounts", {
...timestamps,
id: varchar("id", { length: 255 }).primaryKey().notNull(),
ownerID: ulid("owner_id").references(() => userTable.id, {
onDelete: "cascade",
}),
ownerID: ulid("owner_id")
.references(() => userTable.id, {
onDelete: "cascade",
})
.notNull(),
memberSince: utc("member_since").notNull(),
name: varchar("name", { length: 255 }).notNull(),
lastSyncedAt: utc("last_synced_at").notNull(),