have a basic form of processes working! see demo.lua for an example

This commit is contained in:
Luke Miller 2021-04-21 22:35:30 -04:00
parent 44e40d96e6
commit 4eb12d77c9
5 changed files with 86 additions and 3 deletions

View File

@ -12,4 +12,6 @@ dofile (localdir .. "/orgs/orgs.lua")
dofile (localdir .. "/interactions/interactions.lua")
-- messaging functions
dofile (localdir .. "/processes/processes.lua")
dofile (localdir .. "/processes/processes.lua")
dofile (localdir .. "/modules/dictator.lua")

33
modpol/demo.lua Normal file
View File

@ -0,0 +1,33 @@
test_org = modpol.instance:add_org('test')
req_id = test_org:make_request({
type = 'add_member',
user = 'luke',
params = {'luke'}
})
process = dictator.init(test_org.id, req_id)
process:decide(true)
req_id = test_org:make_request({
type = 'delete',
user = 'luke',
params = {}
})
process = dictator.init(test_org.id, req_id)
process:decide(true)
-- test_org:add_member('luke')
-- test_org:add_member('nathan')
-- test_org:add_member('bruh')
-- print(test_org:list_member())
-- test_org:remove_member('nathan')
-- print('================')
-- print(test_org:list_member())
-- test_org:add_member('testing')
-- test_org:add_member('test 2')
-- print('==================')
-- print(test_org:list_member())
-- print(modpol.orgs.list_all())
-- test_org:delete()

View File

@ -86,3 +86,5 @@ modpol.ocutil.log ("modpol loaded")
-- ===================================================================
-- End of file.
dofile(topdir .. '/demo.lua')

View File

@ -0,0 +1,39 @@
dictator = {}
dictator.__index = dictator
function dictator.init(org_id, request_id)
local object = {
request_id = request_id,
org_id = org_id,
resolved = false
}
setmetatable(object, dictator)
return object
end
function dictator:decide(ruling)
local org = modpol.orgs.get_org(self.org_id)
print(org.name)
if ruling then
local req = org.requests[self.request_id]
print(self.request_id)
for k, v in ipairs(org.requests) do print(k, v) end
print(req)
print(req.type)
if req.type == 'add_org' then
org:add_org(req.params[1])
elseif req.type == 'delete' then
org:delete()
elseif req.type == 'add_member' then
org:add_member(req.params[1])
elseif req.type == 'remove_member' then
org:remove_member(req.params[1])
end
end
org.requests[self.request_id] = nil
end

View File

@ -14,6 +14,7 @@ function temp_org()
policies = {},
processes = {},
requests = {},
request_count = 0,
members = {},
parent = nil,
children = {}
@ -261,9 +262,12 @@ end
-- ===========================
-- compares to requests to see if they are identical
function modpol.orgs.comp_req(req1, req2)
-- compares request type
if req1.type ~= req2.type then
return false
else
-- comparing parameters
-- we can assume the number of params is the same as this is checked in the make_request func
for k, v in ipairs(req1.params) do
if v ~= req2.params[k] then
return false
@ -293,7 +297,10 @@ function modpol.orgs:make_request(request)
end
end
table.insert(self.requests, request)
return true
-- use lazy deletion here, not very clean
-- table.insert(self.requests, request)
self.request_count = self.request_count + 1
self.requests[self.request_count] = request
return self.request_count
end