Skip to content

Commit 16ad4eb

Browse files
author
Olivier Bonnaure
committed
feat: wrapper for surrealdb
1 parent d9abc8b commit 16ad4eb

File tree

2 files changed

+8099
-0
lines changed

2 files changed

+8099
-0
lines changed

.lua/surrealdb.lua

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
-- surrealdb wrapper
2+
--
3+
-- Usage : Surreal.sql("select * from customers").result
4+
--
5+
6+
SurrealToken = ""
7+
SurrealConfig = {}
8+
9+
LastDBConnect = GetTime()
10+
11+
local function auth(db_config)
12+
SurrealConfig = db_config
13+
14+
local ok, headers, body =
15+
Fetch(
16+
SurrealConfig.url .. "/signin",
17+
{
18+
method = "POST",
19+
body = EncodeJson({
20+
user = db_config.username,
21+
pass = db_config.password
22+
}) or "",
23+
headers = {
24+
["Accept"] = "application/json"
25+
}
26+
}
27+
)
28+
29+
if ok == 200 then
30+
SurrealToken = DecodeJson(body)["token"]
31+
end
32+
33+
return SurrealToken
34+
end
35+
36+
local function surreal_sql(sql)
37+
local ok, headers, body =
38+
Fetch(
39+
SurrealConfig.url .. "/sql",
40+
{
41+
method = "POST",
42+
body = sql,
43+
headers = {
44+
["Authorization"] = "Bearer " .. SurrealToken,
45+
["NS"] = SurrealConfig.ns,
46+
["DB"] = SurrealConfig.db,
47+
["Accept"] = "application/json"
48+
}
49+
}
50+
)
51+
52+
return DecodeJson(body)[1]
53+
end
54+
55+
local function refresh_token()
56+
if GetTime() - LastDBConnect > 600 then
57+
auth(SurrealConfig)
58+
LastDBConnect = GetTime()
59+
end
60+
end
61+
62+
return {
63+
auth = auth,
64+
sql = surreal_sql,
65+
refresh_token = refresh_token
66+
}

0 commit comments

Comments
 (0)