Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
Dalethium committed Oct 30, 2021
1 parent b34d3ca commit f39a524
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Visual Studio Workspace File
*.code-workspace
.history
43 changes: 42 additions & 1 deletion storage/database.lua
Original file line number Diff line number Diff line change
Expand Up @@ -22,19 +22,60 @@ function load(name)
return textutils.unserialize(data)
end
local items = load("data")
local regex = load("data_regex")
if not items then
items = {}
end
if not regex then
regex = {}
end

while true do
local senderId, s, protocol = rednet.receive()
if s.call == "set" then
items[s.itemname] = s.item
save(items, "data")
elseif s.call == "setr" then
local exists = false
for entry in regex do
if s.str == entry.str then
rednet.broadcast({["return"] = "exists", ["entry"] = entry})
exists = true
break
end

end
if not exists then
local i = #regex+1
regex[i] = s.location
regex[i]["str"] = s.str
save(regex, "data_regex")
end
elseif s.call == "get" then
if not items[s.item] then
rednet.broadcast({["return"] = "none"})
local found = false
for entry in regex do
if string.match(s.item, entry.str) then
rednet.broadcast({["return"] = "success", ["location"] = entry, ["item"] = s.item})
found = true
break
end
end
if not found then rednet.broadcast({["return"] = "none"}) end
else
rednet.broadcast({["return"] = "success", ["location"] = items[s.item], ["item"] = s.item})
end
elseif s.call == "del" then
if items[s.item] then
items[s.item] = nil
else
for k, v in pairs(regex) do
if v.str == s.item then
regex[k] = nil
break
end
end
end

end
end
16 changes: 16 additions & 0 deletions storage/remote.lua
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,22 @@ if method == "set" then
call["item"] = item
rednet.broadcast(call)
print(serializeTable(get(tArgs[2])))
elseif method == "setr" then
if #tArgs < 6 then return end
call["call"] = "setr"
call["str"] = tArgs[2]
local item = {}
item["x"] = tArgs[3]
item["y"] = tArgs[4]
item["z"] = tArgs[5]
item["dir"] = dirs[tArgs[6]]
call["location"] = item
rednet.broadcast(call)
print(serializeTable(get(tArgs[2])))
elseif method == "del" then
rednet.broadcast(call)
rednet.broadcast({["call"] = "get", ["del"] = tArgs[2]})
print(serializeTable(get(tArgs[2])))
elseif method == "get" then
print(serializeTable(get(tArgs[2])))
end
Expand Down

0 comments on commit f39a524

Please sign in to comment.