generated from Timofey-Makhankov/Node-Express-JS-Template
65 lines
2.2 KiB
TypeScript
65 lines
2.2 KiB
TypeScript
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]
|
|
})
|
|
}))
|