1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
/* eslint-disable @typescript-eslint/no-explicit-any */
/* IMPORT */
import { asc, count, desc, eq } from 'drizzle-orm';
import { PgTransaction } from 'drizzle-orm/pg-core';
import {
riskEvents,
risksView,
type NewRiskEvents,
type RiskEvents,
} from '@/db/schema';
// ----------------------------------------------------------------------------------------------------
/* SELECT RISKS VIEW TRANSACTION */
async function selectRisksView(
tx: PgTransaction<any, any, any>,
params: {
where?: any;
orderBy?: (ReturnType<typeof asc> | ReturnType<typeof desc>)[];
offset?: number;
limit?: number;
},
) {
const {
where,
orderBy,
offset = 0,
limit = 10,
} = params;
const result = await tx
.select()
.from(risksView)
.where(where)
.orderBy(...(orderBy ?? []))
.offset(offset)
.limit(limit);
return result;
}
/* SELECT COUNT TRANSACTION */
async function countRisksView(
tx: PgTransaction<any, any, any>,
where?: any,
) {
const result = await tx
.select({ count: count() })
.from(risksView)
.where(where);
return result[0]?.count ?? 0;
}
/* SELECT RISK EVENTS TRANSACTION */
async function selectRiskEvents(
tx: PgTransaction<any, any, any>,
params: {
where?: any;
orderBy?: (ReturnType<typeof asc> | ReturnType<typeof desc>)[];
offset?: number;
limit?: number;
},
) {
const {
where,
orderBy,
offset = 0,
limit = 10,
} = params;
const result = await tx
.select()
.from(riskEvents)
.where(where)
.orderBy(...(orderBy ?? []))
.offset(offset)
.limit(limit);
return result;
}
// ----------------------------------------------------------------------------------------------------
/* INSERT RISK EVENTS TRANSACTION */
async function insertRiskEvents(
tx: PgTransaction<any, any, any>,
data: NewRiskEvents,
) {
const [insertRes] = await tx
.insert(riskEvents)
.values(data)
.returning();
return insertRes;
}
// ----------------------------------------------------------------------------------------------------
/* UPDATE RISK EVENTS TRANSACTION */
async function updateRiskEvents(
tx: PgTransaction<any, any, any>,
eventId: number,
data: Partial<RiskEvents>,
) {
const [updateRes] = await tx
.update(riskEvents)
.set(data)
.where(eq(riskEvents.id, eventId))
.returning();
return updateRes;
}
// ----------------------------------------------------------------------------------------------------
/* EXPORT */
export {
countRisksView,
insertRiskEvents,
selectRisksView,
selectRiskEvents,
updateRiskEvents,
};
|