refactor(dbscheme): refactoring from opening and saving

This commit is contained in:
2025-06-23 16:44:55 -05:00
parent 7d9ea42f8d
commit c155e89bc7
3 changed files with 61 additions and 30 deletions

View File

@@ -1,6 +1,14 @@
import {text, pgTable, timestamp, uuid, uniqueIndex, jsonb, integer} from "drizzle-orm/pg-core"; import {
import {createInsertSchema, createSelectSchema} from "drizzle-zod"; text,
import {z} from "zod"; pgTable,
timestamp,
uuid,
uniqueIndex,
jsonb,
integer,
} from "drizzle-orm/pg-core";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { z } from "zod";
export const rfidTags = pgTable( export const rfidTags = pgTable(
"rfidTags", "rfidTags",
@@ -23,8 +31,8 @@ export const rfidTags = pgTable(
); );
// Schema for inserting a user - can be used to validate API requests // Schema for inserting a user - can be used to validate API requests
export const insertRolesSchema = createInsertSchema(rfidTags, { // export const insertRolesSchema = createInsertSchema(rfidTags, {
tagHex: z.string().min(3, {message: "Tag Should have more than 3 characters"}), // tagHex: z.string().min(3, {message: "Tag Should have more than 3 characters"}),
}); // });
// Schema for selecting a Expenses - can be used to validate API responses // Schema for selecting a Expenses - can be used to validate API responses
export const selectRolesSchema = createSelectSchema(rfidTags); export const selectRolesSchema = createSelectSchema(rfidTags);

View File

@@ -1,9 +1,18 @@
import {text, pgTable, numeric, index, timestamp, boolean, uuid, uniqueIndex} from "drizzle-orm/pg-core"; import {
import {createInsertSchema, createSelectSchema} from "drizzle-zod"; text,
import {z} from "zod"; pgTable,
import {users} from "./users.js"; numeric,
import {roles} from "./roles.js"; index,
import {modules} from "./modules.js"; timestamp,
boolean,
uuid,
uniqueIndex,
} from "drizzle-orm/pg-core";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { z } from "zod";
import { users } from "./users.js";
import { roles } from "./roles.js";
import { modules } from "./modules.js";
/* /*
we will add the user we will add the user
@@ -17,14 +26,14 @@ export const userRoles = pgTable(
"userRoles", "userRoles",
{ {
user_id: uuid("user_id") user_id: uuid("user_id")
.notNull() .notNull()
.references(() => users.user_id), .references(() => users.user_id),
role_id: uuid("role_id") role_id: uuid("role_id")
.notNull() .notNull()
.references(() => roles.role_id), .references(() => roles.role_id),
module_id: uuid("module_id") module_id: uuid("module_id")
.notNull() .notNull()
.references(() => modules.module_id), .references(() => modules.module_id),
role: text("role").notNull(), // "view", "technician", "supervisor","manager", "admin", "systemAdmin" role: text("role").notNull(), // "view", "technician", "supervisor","manager", "admin", "systemAdmin"
add_User: text("add_User").default("LST_System").notNull(), add_User: text("add_User").default("LST_System").notNull(),
add_Date: timestamp("add_Date").defaultNow(), add_Date: timestamp("add_Date").defaultNow(),
@@ -33,13 +42,18 @@ export const userRoles = pgTable(
}, },
(table) => { (table) => {
// ensures only one user gets permissions to one role // ensures only one user gets permissions to one role
return [uniqueIndex("user_module_unique").on(table.user_id, table.module_id)]; return [
uniqueIndex("user_module_unique").on(
table.user_id,
table.module_id
),
];
} }
); );
// Schema for inserting a user - can be used to validate API requests // Schema for inserting a user - can be used to validate API requests
export const insertUserRolesSchema = createInsertSchema(userRoles, { // export const insertUserRolesSchema = createInsertSchema(userRoles, {
role: z.string().min(3, {message: "Role must be at least 3 characters"}), // role: z.string().min(3, {message: "Role must be at least 3 characters"}),
}); // });
// Schema for selecting a Expenses - can be used to validate API responses // Schema for selecting a Expenses - can be used to validate API responses
export const selectUserRolesSchema = createSelectSchema(userRoles); export const selectUserRolesSchema = createSelectSchema(userRoles);

View File

@@ -1,6 +1,15 @@
import {text, pgTable, numeric, index, timestamp, boolean, uuid, uniqueIndex} from "drizzle-orm/pg-core"; import {
import {createInsertSchema, createSelectSchema} from "drizzle-zod"; text,
import {z} from "zod"; pgTable,
numeric,
index,
timestamp,
boolean,
uuid,
uniqueIndex,
} from "drizzle-orm/pg-core";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { z } from "zod";
export const users = pgTable( export const users = pgTable(
"users", "users",
@@ -27,10 +36,10 @@ export const users = pgTable(
); );
// Schema for inserting a user - can be used to validate API requests // Schema for inserting a user - can be used to validate API requests
export const insertUsersSchema = createInsertSchema(users, { // export const insertUsersSchema = createInsertSchema(users, {
username: z.string().min(3, {message: "Username must be at least 3 characters"}), // username: z.string().min(3, {message: "Username must be at least 3 characters"}),
email: z.string().email({message: "Invalid email"}), // email: z.string().email({message: "Invalid email"}),
password: z.string().min(8, {message: "Password must be at least 8 characters"}), // password: z.string().min(8, {message: "Password must be at least 8 characters"}),
}); // });
// Schema for selecting a Expenses - can be used to validate API responses // Schema for selecting a Expenses - can be used to validate API responses
export const selectUsersSchema = createSelectSchema(users); export const selectUsersSchema = createSelectSchema(users);