feat(consent): user_terms_consents + /v1/me/consent
This commit is contained in:
@@ -23,3 +23,4 @@ export * from "./ops.js";
|
||||
export * from "./platform.js";
|
||||
export * from "./releaseGates.js";
|
||||
export * from "./gemini-usage.js";
|
||||
export * from "./terms.js";
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
import { pgTable, text, timestamp, uniqueIndex, uuid } from "drizzle-orm/pg-core";
|
||||
import { createdAt } from "./_shared.js";
|
||||
import { users } from "./users.js";
|
||||
|
||||
/**
|
||||
* Godkännande av allmänna villkor. En rad per (userId, termsVersion) gör
|
||||
* bevislagringen otvetydig: vilken version som gällde när användaren
|
||||
* accepterade och exakt när det skedde.
|
||||
*/
|
||||
export const userTermsConsents = pgTable(
|
||||
"user_terms_consents",
|
||||
{
|
||||
id: uuid("id").primaryKey().defaultRandom(),
|
||||
userId: uuid("user_id")
|
||||
.notNull()
|
||||
.references(() => users.id, { onDelete: "cascade" }),
|
||||
termsVersion: text("terms_version").notNull(),
|
||||
acceptedAt: timestamp("accepted_at", { withTimezone: true }).notNull().defaultNow(),
|
||||
createdAt: createdAt(),
|
||||
},
|
||||
(t) => [uniqueIndex("user_terms_consents_user_version_unique").on(t.userId, t.termsVersion)],
|
||||
);
|
||||
Reference in New Issue
Block a user