Skip to content

Commit f06f699

Browse files
authored
Merge pull request #30 from fenix-hub/dev
support upsert for storage.upload()
2 parents 06028e8 + b1cb64c commit f06f699

File tree

6 files changed

+25
-40
lines changed

6 files changed

+25
-40
lines changed

.gitignore

Lines changed: 0 additions & 16 deletions
This file was deleted.

addons/supabase/Auth/auth.gd

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,6 @@ func _on_task_completed(task : AuthTask) -> void:
228228
elif task.error != null:
229229
emit_signal("error", task.error)
230230
_pooled_tasks.erase(task)
231-
232231

233232
# A timer used to listen through TCP on the redirect uri of the request
234233
func _tcp_stream_timer() -> void:

addons/supabase/Database/database.gd

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,3 +70,4 @@ func _on_task_completed(task : DatabaseTask) -> void:
7070
emit_signal("rpc_completed", task.data)
7171
elif task.error != null:
7272
emit_signal("error", task.error)
73+
_pooled_tasks.erase(task)

addons/supabase/Database/query.gd

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ var query_struct : Dictionary = {
1818
}
1919

2020
var query : String = ""
21+
var raw_query : String = ""
2122
var header : PoolStringArray = []
2223
var request : int
2324
var body : String = ""
@@ -58,21 +59,27 @@ enum Filters {
5859
WFTS
5960
}
6061

61-
func _init():
62-
pass
62+
func _init(_raw_query : String = "", _raw_type : int = -1, _raw_header : PoolStringArray = [], _raw_body : String = ""):
63+
if _raw_query != "":
64+
raw_query = _raw_query
65+
query = _raw_query
66+
request = _raw_type
67+
header = _raw_header as PoolStringArray
68+
body = _raw_body
6369

6470
# Build the query from the scrut
6571
func build_query() -> String:
66-
for key in query_struct:
67-
if query_struct[key].empty(): continue
68-
match key:
69-
"table":
70-
query += query_struct[key]
71-
"select", "order":
72-
if query_struct[key].empty(): continue
73-
query += (key + "=" + PoolStringArray(query_struct[key]).join(",")+"&")
74-
"eq", "neq", "lt", "gt", "lte", "gte", "like", "ilike", "IS", "in", "fts", "plfts", "phfts", "wfts":
75-
query += PoolStringArray(query_struct[key]).join("&")
72+
if raw_query == "" and query == raw_query:
73+
for key in query_struct:
74+
if query_struct[key].empty(): continue
75+
match key:
76+
"table":
77+
query += query_struct[key]
78+
"select", "order":
79+
if query_struct[key].empty(): continue
80+
query += (key + "=" + PoolStringArray(query_struct[key]).join(",")+"&")
81+
"eq", "neq", "lt", "gt", "lte", "gte", "like", "ilike", "IS", "in", "fts", "plfts", "phfts", "wfts":
82+
query += PoolStringArray(query_struct[key]).join("&")
7683
return query
7784

7885

addons/supabase/Storage/storage.gd

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ func _init(config : Dictionary) -> void:
2222
_config = config
2323
name = "Storage"
2424

25-
func _ready() -> void:
26-
var buckets : Node = Node.new()
27-
buckets.set_name("Buckets")
28-
add_child(buckets)
29-
3025
func list_buckets() -> StorageTask:
3126
_bearer = Supabase.auth._bearer
3227
var endpoint : String = _config.supabaseUrl + _rest_endpoint + "bucket"
@@ -102,7 +97,7 @@ func delete_bucket(id : String) -> StorageTask:
10297

10398

10499
func from(id : String) -> StorageBucket:
105-
for bucket in get_node("Buckets").get_children():
100+
for bucket in get_children():
106101
if bucket.id == id:
107102
return bucket
108103
var storage_bucket : StorageBucket = StorageBucket.new(id, _config)

addons/supabase/Storage/storage_bucket.gd

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const MIME_TYPES : Dictionary = {
2424
"tiff": "image/tiff",
2525
"tres": "text/plain",
2626
"tscn": "text/plain",
27-
"txt": "text/plain",
27+
"txt": "text/script",
2828
"wav": "audio/wav",
2929
"webm": "video/webm",
3030
"webp": "video/webm",
@@ -84,25 +84,24 @@ func list(prefix : String = "", limit : int = 100, offset : int = 0, sort_by : D
8484
return task
8585

8686

87-
func upload(object : String, file_path : String) -> StorageTask:
87+
func upload(object : String, file_path : String, upsert : bool = false) -> StorageTask:
8888
requesting_raw = true
8989
_bearer = Supabase.auth._bearer
9090
var task : StorageTask = StorageTask.new()
9191
var endpoint : String = _config.supabaseUrl + _rest_endpoint + id + "/" + object
9292
var file : File = File.new()
9393
var error : int = file.open(file_path, File.READ)
9494
if error != OK:
95-
printerr("There was an error opening the file at path: ", file_path)
9695
task.complete({})
9796
return task
98-
var header : PoolStringArray = [_header[0] % MIME_TYPES.get(object.get_extension(), "application/octet-stream")]
97+
var header : PoolStringArray = [_header[0] % MIME_TYPES.get(file_path.get_extension(), "application/octet-stream")]
9998
header.append("Content-Length: %s" % file.get_len())
10099
task.connect("completed", self, "_on_task_completed")
101100
task._setup(
102101
task.METHODS.UPLOAD_OBJECT,
103102
endpoint,
104103
header + _bearer,
105-
"",
104+
to_json({upsert = upsert}),
106105
file.get_buffer(file.get_len())
107106
)
108107
_current_task = task

0 commit comments

Comments
 (0)