拆分打手等级仓储
This commit is contained in:
@@ -2,6 +2,7 @@ export * from './types.js'
|
||||
export * from './shared.js'
|
||||
export * from './worker-repo.js'
|
||||
export * from './worker-session-repo.js'
|
||||
export * from './worker-level-repo.js'
|
||||
export * from './work-order-repo.js'
|
||||
export * from './work-order-event-repo.js'
|
||||
export * from './work-order-share-repo.js'
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
import { query } from '../../db/client.js'
|
||||
import type { WorkerLevelRow } from './types.js'
|
||||
|
||||
export async function getWorkerLevelByKey(levelKey: string): Promise<WorkerLevelRow | null> {
|
||||
const result = await query<WorkerLevelRow>(
|
||||
'SELECT * FROM worker_levels WHERE level_key = $1 LIMIT 1',
|
||||
[String(levelKey || '').trim()],
|
||||
)
|
||||
return result.rows[0] || null
|
||||
}
|
||||
|
||||
export async function getWorkerLevelById(levelId: number | string): Promise<WorkerLevelRow | null> {
|
||||
const result = await query<WorkerLevelRow>('SELECT * FROM worker_levels WHERE id = $1 LIMIT 1', [
|
||||
Number(levelId),
|
||||
])
|
||||
return result.rows[0] || null
|
||||
}
|
||||
|
||||
export async function listWorkerLevels(): Promise<WorkerLevelRow[]> {
|
||||
const result = await query<WorkerLevelRow>(
|
||||
'SELECT * FROM worker_levels ORDER BY sort_order ASC, id ASC',
|
||||
)
|
||||
return result.rows
|
||||
}
|
||||
|
||||
export async function upsertWorkerLevel(input: {
|
||||
levelKey: string
|
||||
name: string
|
||||
sortOrder: number
|
||||
status: string
|
||||
permissionJson: string
|
||||
now: string
|
||||
}): Promise<WorkerLevelRow | null> {
|
||||
const result = await query<WorkerLevelRow>(
|
||||
`INSERT INTO worker_levels (
|
||||
level_key, name, sort_order, status, permission_json, created_at, updated_at
|
||||
) VALUES ($1, $2, $3, $4, $5::jsonb, $6, $7)
|
||||
ON CONFLICT (level_key) DO UPDATE
|
||||
SET name = EXCLUDED.name, sort_order = EXCLUDED.sort_order, status = EXCLUDED.status,
|
||||
permission_json = EXCLUDED.permission_json, updated_at = EXCLUDED.updated_at
|
||||
RETURNING *`,
|
||||
[
|
||||
input.levelKey,
|
||||
input.name,
|
||||
input.sortOrder,
|
||||
input.status,
|
||||
input.permissionJson,
|
||||
input.now,
|
||||
input.now,
|
||||
],
|
||||
)
|
||||
return result.rows[0] || null
|
||||
}
|
||||
|
||||
export async function countWorkerLevelUsages(levelId: number | string): Promise<number> {
|
||||
const result = await query<{ total: number }>(
|
||||
'SELECT COUNT(*)::int AS total FROM worker_users WHERE level_id = $1',
|
||||
[Number(levelId)],
|
||||
)
|
||||
return Number(result.rows[0]?.total || 0)
|
||||
}
|
||||
|
||||
export async function deleteWorkerLevel(levelId: number | string): Promise<{ deleted: boolean }> {
|
||||
const result = await query<{ id: number }>(
|
||||
'DELETE FROM worker_levels WHERE id = $1 RETURNING id',
|
||||
[Number(levelId)],
|
||||
)
|
||||
return { deleted: Boolean(result.rows[0]) }
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import type {
|
||||
ListInput,
|
||||
WalletLedgerListInput,
|
||||
WorkerFinanceRequestRow,
|
||||
WorkerLevelRow,
|
||||
WorkerUserRow,
|
||||
WorkerWithdrawalAccountRow,
|
||||
WorkerWalletLedgerRow,
|
||||
@@ -68,78 +67,14 @@ export {
|
||||
type CreateWorkerSessionResult,
|
||||
} from './worker-session-repo.js'
|
||||
|
||||
export async function getWorkerLevelByKey(levelKey: string): Promise<WorkerLevelRow | null> {
|
||||
const result = await query<WorkerLevelRow>(
|
||||
'SELECT * FROM worker_levels WHERE level_key = $1 LIMIT 1',
|
||||
[String(levelKey || '').trim()],
|
||||
)
|
||||
return result.rows[0] || null
|
||||
}
|
||||
|
||||
export async function getWorkerLevelById(levelId: number | string): Promise<WorkerLevelRow | null> {
|
||||
const result = await query<WorkerLevelRow>('SELECT * FROM worker_levels WHERE id = $1 LIMIT 1', [
|
||||
Number(levelId),
|
||||
])
|
||||
return result.rows[0] || null
|
||||
}
|
||||
|
||||
export async function listWorkerLevels(): Promise<WorkerLevelRow[]> {
|
||||
const result = await query<WorkerLevelRow>(
|
||||
'SELECT * FROM worker_levels ORDER BY sort_order ASC, id ASC',
|
||||
)
|
||||
return result.rows
|
||||
}
|
||||
|
||||
export async function upsertWorkerLevel(input: {
|
||||
levelKey: string
|
||||
name: string
|
||||
sortOrder: number
|
||||
status: string
|
||||
permissionJson: string
|
||||
now: string
|
||||
}): Promise<WorkerLevelRow | null> {
|
||||
const result = await query<WorkerLevelRow>(
|
||||
`
|
||||
INSERT INTO worker_levels (
|
||||
level_key, name, sort_order, status, permission_json, created_at, updated_at
|
||||
) VALUES ($1, $2, $3, $4, $5::jsonb, $6, $7)
|
||||
ON CONFLICT (level_key) DO UPDATE
|
||||
SET
|
||||
name = EXCLUDED.name,
|
||||
sort_order = EXCLUDED.sort_order,
|
||||
status = EXCLUDED.status,
|
||||
permission_json = EXCLUDED.permission_json,
|
||||
updated_at = EXCLUDED.updated_at
|
||||
RETURNING *
|
||||
`,
|
||||
[
|
||||
input.levelKey,
|
||||
input.name,
|
||||
input.sortOrder,
|
||||
input.status,
|
||||
input.permissionJson,
|
||||
input.now,
|
||||
input.now,
|
||||
],
|
||||
)
|
||||
return result.rows[0] || null
|
||||
}
|
||||
|
||||
export async function countWorkerLevelUsages(levelId: number | string): Promise<number> {
|
||||
const result = await query<{ total: number }>(
|
||||
'SELECT COUNT(*)::int AS total FROM worker_users WHERE level_id = $1',
|
||||
[Number(levelId)],
|
||||
)
|
||||
return Number(result.rows[0]?.total || 0)
|
||||
}
|
||||
|
||||
export async function deleteWorkerLevel(levelId: number | string): Promise<{ deleted: boolean }> {
|
||||
const result = await query<{ id: number }>(
|
||||
'DELETE FROM worker_levels WHERE id = $1 RETURNING id',
|
||||
[Number(levelId)],
|
||||
)
|
||||
return { deleted: Boolean(result.rows[0]) }
|
||||
}
|
||||
export {
|
||||
countWorkerLevelUsages,
|
||||
deleteWorkerLevel,
|
||||
getWorkerLevelById,
|
||||
getWorkerLevelByKey,
|
||||
listWorkerLevels,
|
||||
upsertWorkerLevel,
|
||||
} from './worker-level-repo.js'
|
||||
|
||||
export async function getWorkerUserByUsername(username: string): Promise<WorkerUserRow | null> {
|
||||
const result = await query<WorkerUserRow>(
|
||||
|
||||
Reference in New Issue
Block a user