feat(schema): Move and enhance schema definitions
This commit relocates the schema definitions by deleting the existing `drizzle/schema.ts` and creating a new `schema.ts` file. It also enhances these definitions by adding `createInsertSchema` and `createSelectSchema` for each table.
This commit is contained in:
parent
ed2fc3dbf9
commit
2aa793c91d
@ -1,172 +0,0 @@
|
||||
import { pgTable } from "drizzle-orm/pg-core";
|
||||
import * as p from "drizzle-orm/pg-core";
|
||||
|
||||
export const UsersTable = pgTable("users", {
|
||||
// Unique identifier on a technical aspect.
|
||||
uuid: p.uuid("uuid").unique().primaryKey().defaultRandom().notNull(),
|
||||
|
||||
email: p
|
||||
.varchar("email", {
|
||||
length: 64
|
||||
})
|
||||
.unique()
|
||||
.notNull(),
|
||||
|
||||
emailCode: p
|
||||
.varchar("email_code", {
|
||||
length: 6
|
||||
})
|
||||
.$defaultFn(()=>{
|
||||
return "032745"
|
||||
}),
|
||||
|
||||
firstName: p
|
||||
.varchar("first_name", {
|
||||
length: 24,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
lastName: p
|
||||
.varchar("last_name", {
|
||||
length: 24,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//hash (Argonid2 hash)
|
||||
hash: p
|
||||
.varchar("hash", {
|
||||
length: 97,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//METADATA
|
||||
iat: p
|
||||
.timestamp("issued_at", {
|
||||
withTimezone: true,
|
||||
})
|
||||
.defaultNow()
|
||||
.notNull(),
|
||||
|
||||
gdprAcceptance: p
|
||||
.timestamp("ack_gdpr", {
|
||||
withTimezone: true,
|
||||
})
|
||||
.defaultNow()
|
||||
.notNull(),
|
||||
|
||||
isAdmin: p
|
||||
.boolean("is_admin")
|
||||
.default(false)
|
||||
.notNull()
|
||||
});
|
||||
|
||||
export const ProductsTable = pgTable("products", {
|
||||
uuid: p.uuid("uuid").unique().primaryKey().defaultRandom().notNull(),
|
||||
|
||||
//slugName
|
||||
slugName: p
|
||||
.varchar("slug_name", {
|
||||
length: 32,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//displayName
|
||||
displayName: p
|
||||
.varchar("display_name", {
|
||||
length: 64,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//price
|
||||
price: p
|
||||
.decimal("price", {
|
||||
precision: 10,
|
||||
scale: 2,
|
||||
})
|
||||
.default("0.0")
|
||||
.notNull(),
|
||||
|
||||
//imagePath
|
||||
imagePath: p
|
||||
.varchar("image_path", {
|
||||
length: 128,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//playload of the description element
|
||||
|
||||
})
|
||||
|
||||
export const StocksTable = pgTable("stocks", {
|
||||
productId: p.uuid("product_id")
|
||||
.references(()=> ProductsTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
quantity: p
|
||||
.integer("quantity")
|
||||
.default(0)
|
||||
.notNull(),
|
||||
|
||||
})
|
||||
|
||||
export const CommentsTable = pgTable("comments", {
|
||||
productId: p.uuid("product_id")
|
||||
.references(()=> ProductsTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
authorId: p.uuid("author_id")
|
||||
.references(()=> UsersTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
//notation
|
||||
notation: p
|
||||
.integer("notation")
|
||||
.default(0)
|
||||
.notNull(),
|
||||
|
||||
//json payload with the message
|
||||
message: p
|
||||
.jsonb("message")
|
||||
.notNull(),
|
||||
|
||||
//iat
|
||||
iat: p
|
||||
.timestamp("issued_at", {
|
||||
withTimezone: true,
|
||||
})
|
||||
.defaultNow()
|
||||
.notNull(),
|
||||
})
|
||||
|
||||
export const PurchaseHistory = pgTable("purchases", {
|
||||
uuid: p.uuid("uuid").unique().primaryKey().defaultRandom().notNull(),
|
||||
|
||||
productId: p.uuid("product_id")
|
||||
.references(()=> ProductsTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
unitPrice: p
|
||||
.decimal("unit_price", {
|
||||
precision: 10,
|
||||
scale: 2,
|
||||
})
|
||||
.default("0.0")
|
||||
.notNull(),
|
||||
|
||||
quantity: p
|
||||
.integer("quantity")
|
||||
.default(0)
|
||||
.notNull(),
|
||||
|
||||
clientId: p.uuid("client_id")
|
||||
.references(()=> UsersTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
timestamp: p
|
||||
.timestamp("timestamp", {
|
||||
withTimezone: true,
|
||||
})
|
||||
.defaultNow()
|
||||
.notNull(),
|
||||
|
||||
})
|
177
src/schema.ts
Normal file
177
src/schema.ts
Normal file
@ -0,0 +1,177 @@
|
||||
import { pgTable } from "drizzle-orm/pg-core";
|
||||
import * as p from "drizzle-orm/pg-core";
|
||||
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
|
||||
|
||||
|
||||
export const UsersTable = pgTable("users", {
|
||||
// Unique identifier on a technical aspect.
|
||||
uuid: p.uuid("uuid").unique().primaryKey().defaultRandom().notNull(),
|
||||
|
||||
email: p
|
||||
.varchar("email", {
|
||||
length: 64,
|
||||
})
|
||||
.unique()
|
||||
.notNull(),
|
||||
|
||||
emailCode: p
|
||||
.varchar("email_code", {
|
||||
length: 6,
|
||||
})
|
||||
.$defaultFn(() => {
|
||||
return "032745";
|
||||
}),
|
||||
|
||||
firstName: p
|
||||
.varchar("first_name", {
|
||||
length: 24,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
lastName: p
|
||||
.varchar("last_name", {
|
||||
length: 24,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//hash (Argonid2 hash)
|
||||
hash: p
|
||||
.varchar("hash", {
|
||||
length: 97,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//METADATA
|
||||
iat: p
|
||||
.timestamp("issued_at", {
|
||||
withTimezone: true,
|
||||
})
|
||||
.defaultNow()
|
||||
.notNull(),
|
||||
|
||||
gdprAcceptance: p
|
||||
.timestamp("ack_gdpr", {
|
||||
withTimezone: true,
|
||||
})
|
||||
.defaultNow()
|
||||
.notNull(),
|
||||
|
||||
isAdmin: p.boolean("is_admin").default(false).notNull(),
|
||||
});
|
||||
|
||||
export const ProductsTable = pgTable("products", {
|
||||
uuid: p.uuid("uuid").unique().primaryKey().defaultRandom().notNull(),
|
||||
|
||||
//slugName
|
||||
slugName: p
|
||||
.varchar("slug_name", {
|
||||
length: 32,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//displayName
|
||||
displayName: p
|
||||
.varchar("display_name", {
|
||||
length: 64,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//price
|
||||
price: p
|
||||
.decimal("price", {
|
||||
precision: 10,
|
||||
scale: 2,
|
||||
})
|
||||
.default("0.0")
|
||||
.notNull(),
|
||||
|
||||
//imagePath
|
||||
imagePath: p
|
||||
.varchar("image_path", {
|
||||
length: 128,
|
||||
})
|
||||
.notNull(),
|
||||
|
||||
//playload of the description element
|
||||
});
|
||||
|
||||
export const StocksTable = pgTable("stocks", {
|
||||
productId: p
|
||||
.uuid("product_id")
|
||||
.references(() => ProductsTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
quantity: p.integer("quantity").default(0).notNull(),
|
||||
});
|
||||
|
||||
export const CommentsTable = pgTable("comments", {
|
||||
productId: p
|
||||
.uuid("product_id")
|
||||
.references(() => ProductsTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
authorId: p
|
||||
.uuid("author_id")
|
||||
.references(() => UsersTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
//notation
|
||||
notation: p.integer("notation").default(0).notNull(),
|
||||
|
||||
//json payload with the message
|
||||
message: p.jsonb("message").notNull(),
|
||||
|
||||
//iat
|
||||
iat: p
|
||||
.timestamp("issued_at", {
|
||||
withTimezone: true,
|
||||
})
|
||||
.defaultNow()
|
||||
.notNull(),
|
||||
});
|
||||
|
||||
export const PurchaseHistory = pgTable("purchases", {
|
||||
uuid: p.uuid("uuid").unique().primaryKey().defaultRandom().notNull(),
|
||||
|
||||
productId: p
|
||||
.uuid("product_id")
|
||||
.references(() => ProductsTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
unitPrice: p
|
||||
.decimal("unit_price", {
|
||||
precision: 10,
|
||||
scale: 2,
|
||||
})
|
||||
.default("0.0")
|
||||
.notNull(),
|
||||
|
||||
quantity: p.integer("quantity").default(0).notNull(),
|
||||
|
||||
clientId: p
|
||||
.uuid("client_id")
|
||||
.references(() => UsersTable.uuid)
|
||||
.notNull(),
|
||||
|
||||
timestamp: p
|
||||
.timestamp("timestamp", {
|
||||
withTimezone: true,
|
||||
})
|
||||
.defaultNow()
|
||||
.notNull(),
|
||||
});
|
||||
|
||||
export const UsersTableSelectSchema = createSelectSchema(UsersTable)
|
||||
export const UsersTableInsertSchema = createInsertSchema(UsersTable)
|
||||
|
||||
export const ProductsTableSelectSchema = createSelectSchema(ProductsTable);
|
||||
export const ProductsTableInsertSchema = createInsertSchema(ProductsTable);
|
||||
|
||||
export const StocksTableSelectSchema = createSelectSchema(StocksTable);
|
||||
export const StocksTableInsertSchema = createInsertSchema(StocksTable);
|
||||
|
||||
export const CommentsTableSelectSchema = createSelectSchema(CommentsTable);
|
||||
export const CommentsTableInsertSchema = createInsertSchema(CommentsTable);
|
||||
|
||||
export const PurchaseHistorySelectSchema = createSelectSchema(PurchaseHistory);
|
||||
export const PurchaseHistoryInsertSchema = createInsertSchema(PurchaseHistory);
|
Loading…
x
Reference in New Issue
Block a user