6715a030ec
* fix(server/auth): database errors result in 500 status code - previously 401 were returned which resulted in connectors not retrying * log as info, not error. Handle errors while validating read * Unknown errors should continue to be bubbled up the stack
33 lines
899 B
TypeScript
33 lines
899 B
TypeScript
import { GetRoles, UpsertRole } from '@/modules/shared/domain/rolesAndScopes/operations'
|
|
import { UserRole } from '@/modules/shared/domain/rolesAndScopes/types'
|
|
import { Knex } from 'knex'
|
|
import { DatabaseError } from '@/modules/shared/errors'
|
|
|
|
let roles: UserRole[]
|
|
|
|
export const getRolesFactory =
|
|
({ db }: { db: Knex }): GetRoles =>
|
|
async () => {
|
|
if (roles) return roles
|
|
try {
|
|
roles = await db('user_roles').select('*')
|
|
} catch (e) {
|
|
if (e instanceof Error)
|
|
throw new DatabaseError(
|
|
'Database error occurred while attempting to get Roles',
|
|
{ cause: e }
|
|
)
|
|
throw e
|
|
}
|
|
return roles
|
|
}
|
|
|
|
export const registerOrUpdateRole =
|
|
({ db }: { db: Knex }): UpsertRole =>
|
|
async ({ role }) => {
|
|
await db('user_roles')
|
|
.insert(role)
|
|
.onConflict('name')
|
|
.merge(['weight', 'description', 'resourceTarget'])
|
|
}
|