generated from Timofey-Makhankov/Node-Express-JS-Template
implemented User Schema & created seed Function for DB
This commit is contained in:
@@ -1,2 +1,64 @@
|
||||
// @ts-ignore: Remove, when creating Schemas
|
||||
import { int, sqliteTable, text } from "drizzle-orm/sqlite-core"
|
||||
import { relations } from "drizzle-orm"
|
||||
import { int, sqliteTable, text, primaryKey } from "drizzle-orm/sqlite-core"
|
||||
|
||||
export const usersTable = sqliteTable("users", {
|
||||
id: int("id").primaryKey({ autoIncrement: true }),
|
||||
name: text("name").notNull(),
|
||||
password: text("hash_password").notNull(),
|
||||
email: text("email").notNull().unique()
|
||||
})
|
||||
|
||||
export const rolesTable = sqliteTable("roles", {
|
||||
id: int("id").primaryKey({ autoIncrement: true }),
|
||||
name: text("name").notNull()
|
||||
})
|
||||
|
||||
export const permissionsTable = sqliteTable("permissions", {
|
||||
id: int("id").primaryKey({ autoIncrement: true }),
|
||||
name: text("name").notNull()
|
||||
})
|
||||
|
||||
export const usersRolesTable = sqliteTable('users_roles', {
|
||||
userId: int("user_id").notNull().references(() => usersTable.id),
|
||||
roleId: int("role_id").notNull().references(() => rolesTable.id)
|
||||
}, (t) => [ primaryKey({ columns: [ t.userId, t.roleId ] }) ])
|
||||
|
||||
export const rolesPermissionsTable = sqliteTable('roles_permissions', {
|
||||
roleId: int("role_id").notNull().references(() => rolesTable.id),
|
||||
permissionId: int("permission_id").notNull().references(() => permissionsTable.id)
|
||||
}, (t) => [primaryKey({columns: [t.roleId, t.permissionId]})])
|
||||
|
||||
export const usersRelations = relations(usersTable, ({ many }) => ({
|
||||
usersToRoles: many(usersRolesTable),
|
||||
}))
|
||||
|
||||
export const rolesRelations = relations(rolesTable, ({ many }) => ({
|
||||
usersToRoles: many(usersRolesTable),
|
||||
rolesToPermissions: many(rolesPermissionsTable)
|
||||
}))
|
||||
|
||||
export const permissionsRelations = relations(permissionsTable, ({ many }) => ({
|
||||
rolesToPermissions: many(rolesPermissionsTable)
|
||||
}))
|
||||
|
||||
export const usersToRolesRelations = relations(usersRolesTable, ({ one }) => ({
|
||||
user: one(usersTable, {
|
||||
fields: [usersRolesTable.userId],
|
||||
references: [usersTable.id]
|
||||
}),
|
||||
role: one(rolesTable, {
|
||||
fields: [usersRolesTable.roleId],
|
||||
references: [rolesTable.id]
|
||||
})
|
||||
}))
|
||||
|
||||
export const rolesToPermissionsRelations = relations(rolesPermissionsTable, ({one}) => ({
|
||||
role: one(rolesTable, {
|
||||
fields: [rolesPermissionsTable.roleId],
|
||||
references: [rolesTable.id]
|
||||
}),
|
||||
permission: one(permissionsTable, {
|
||||
fields: [rolesPermissionsTable.permissionId],
|
||||
references: [permissionsTable.id]
|
||||
})
|
||||
}))
|
||||
|
||||
Reference in New Issue
Block a user