forked from lightspeed-core/lightspeed-stack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsql.py
More file actions
147 lines (124 loc) · 4.22 KB
/
Copy pathsql.py
File metadata and controls
147 lines (124 loc) · 4.22 KB
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
"""SQL commands used by quota management package."""
CREATE_QUOTA_TABLE_PG = """
CREATE TABLE IF NOT EXISTS quota_limits (
id text NOT NULL,
subject char(1) NOT NULL,
quota_limit int NOT NULL,
available int,
updated_at timestamp with time zone,
revoked_at timestamp with time zone,
PRIMARY KEY(id, subject)
);
"""
CREATE_QUOTA_TABLE_SQLITE = """
CREATE TABLE IF NOT EXISTS quota_limits (
id text NOT NULL,
subject char(1) NOT NULL,
quota_limit int NOT NULL,
available int,
updated_at timestamp with time zone,
revoked_at timestamp with time zone,
PRIMARY KEY(id, subject)
);
"""
INCREASE_QUOTA_STATEMENT_PG = """
UPDATE quota_limits
SET available=available+%s, revoked_at=NOW()
WHERE subject=%s
AND revoked_at < NOW() - INTERVAL %s ;
"""
INCREASE_QUOTA_STATEMENT_SQLITE = """
UPDATE quota_limits
SET available=available+?, revoked_at=datetime('now')
WHERE subject=?
AND revoked_at < datetime('now', ?);
"""
RESET_QUOTA_STATEMENT_PG = """
UPDATE quota_limits
SET available=%s, revoked_at=NOW()
WHERE subject=%s
AND revoked_at < NOW() - INTERVAL %s ;
"""
RESET_QUOTA_STATEMENT_SQLITE = """
UPDATE quota_limits
SET available=?, revoked_at=datetime('now')
WHERE subject=?
AND revoked_at < datetime('now', ?);
"""
INIT_QUOTA_PG = """
INSERT INTO quota_limits (id, subject, quota_limit, available, revoked_at)
VALUES (%s, %s, %s, %s, %s)
"""
INIT_QUOTA_SQLITE = """
INSERT INTO quota_limits (id, subject, quota_limit, available, revoked_at)
VALUES (?, ?, ?, ?, ?)
"""
SELECT_QUOTA_PG = """
SELECT available
FROM quota_limits
WHERE id=%s AND subject=%s LIMIT 1
"""
SELECT_QUOTA_SQLITE = """
SELECT available
FROM quota_limits
WHERE id=? AND subject=? LIMIT 1
"""
SET_AVAILABLE_QUOTA_PG = """
UPDATE quota_limits
SET available=%s, revoked_at=%s
WHERE id=%s AND subject=%s
"""
SET_AVAILABLE_QUOTA_SQLITE = """
UPDATE quota_limits
SET available=?, revoked_at=?
WHERE id=? AND subject=?
"""
UPDATE_AVAILABLE_QUOTA_PG = """
UPDATE quota_limits
SET available=available+%s, updated_at=%s
WHERE id=%s AND subject=%s
"""
UPDATE_AVAILABLE_QUOTA_SQLITE = """
UPDATE quota_limits
SET available=available+?, updated_at=?
WHERE id=? AND subject=?
"""
CREATE_TOKEN_USAGE_TABLE = """
CREATE TABLE IF NOT EXISTS token_usage (
user_id text NOT NULL,
provider text NOT NULL,
model text NOT NULL,
input_tokens int,
output_tokens int,
updated_at timestamp with time zone,
PRIMARY KEY(user_id, provider, model)
);
"""
INIT_TOKEN_USAGE_FOR_USER = """
INSERT INTO token_usage (user_id, provider, model, input_tokens, output_tokens, updated_at)
VALUES (%s, %s, %s, 0, 0, %s)
"""
CONSUME_TOKENS_FOR_USER_SQLITE = """
INSERT INTO token_usage (user_id, provider, model, input_tokens, output_tokens, updated_at)
VALUES (:user_id, :provider, :model, :input_tokens, :output_tokens, :updated_at)
ON CONFLICT (user_id, provider, model)
DO UPDATE
SET input_tokens=token_usage.input_tokens+:input_tokens,
output_tokens=token_usage.output_tokens+:output_tokens,
updated_at=:updated_at
WHERE token_usage.user_id=:user_id
AND token_usage.provider=:provider
AND token_usage.model=:model
"""
CONSUME_TOKENS_FOR_USER_PG = """
INSERT INTO token_usage (user_id, provider, model, input_tokens, output_tokens, updated_at)
VALUES (%(user_id)s, %(provider)s, %(model)s, %(input_tokens)s, %(output_tokens)s, %(updated_at)s)
ON CONFLICT (user_id, provider, model)
DO UPDATE
SET input_tokens=token_usage.input_tokens+%(input_tokens)s,
output_tokens=token_usage.output_tokens+%(output_tokens)s,
updated_at=%(updated_at)s
WHERE token_usage.user_id=%(user_id)s
AND token_usage.provider=%(provider)s
AND token_usage.model=%(model)s
"""