diff --git a/modpol/api.lua b/modpol/api.lua index c44cf88..b5092de 100644 --- a/modpol/api.lua +++ b/modpol/api.lua @@ -6,10 +6,10 @@ local localdir = modpol.topdir dofile (localdir .. "/users/users.lua") --orgs -dofile (localdir .. "/orgs/orgs.lua") +dofile (localdir .. "/orgs/new_orgs.lua") --interactions dofile (localdir .. "/interactions/interactions.lua") -- messaging functions -dofile (localdir .. "/processes/processes.lua") +dofile (localdir .. "/processes/processes.lua") \ No newline at end of file diff --git a/modpol/modpol.lua b/modpol/modpol.lua index fbdae77..e7c7e70 100644 --- a/modpol/modpol.lua +++ b/modpol/modpol.lua @@ -77,9 +77,9 @@ dofile (topdir .. "/api.lua") -- Final checks -- create instance if not present -if not modpol.get_org_id_by_name('instance') then - modpol.add_org("instance", modpol.list_users()) -end +-- if not modpol.get_org_id_by_name('instance') then +-- modpol.add_org("instance", modpol.list_users()) +-- end modpol.ocutil.log ("modpol loaded") diff --git a/modpol/orgs/new_orgs.lua b/modpol/orgs/new_orgs.lua new file mode 100644 index 0000000..9016173 --- /dev/null +++ b/modpol/orgs/new_orgs.lua @@ -0,0 +1,74 @@ +modpol.orgs = +{ + count = 1, + list = {} +} + +-- sets modpol.orgs as it's own callback +modpol.orgs.__index = modpol.orgs + +function modpol.orgs:init_instance() + if modpol.orgs.list[1] then + print('Error: instance has already been initialized') + return false + end + + local instance = { + id = 1, + name = "instance", + policies = {}, + members = {}, + ledger = {}, + parent = nil, + children = {}, + properties = {}, + old_names = {} + } + setmetatable(instance, modpol.orgs) + + -- adding instance to org list + modpol.orgs.list[1] = instance + return instance +end + +function modpol.orgs:add_org(name) + if self.id == nil then + print('Error: add_org can only be run by a parent org') + return false + end + + if modpol.ocutil.str_empty(name) then + print('Error: name is required') + return false + end + + -- creating the child sub org + modpol.orgs.count = modpol.orgs.count + 1 + local child_org = { + id = modpol.orgs.count, + name = name, + policies = {}, + members = {}, + ledger = {}, + parent = self.id, + children = {}, + properties = {}, + old_names = {} + } + setmetatable(child_org, modpol.orgs) + + -- adding child id to list of children + table.insert(self.children, child_org.id) + + -- adding child to org list + modpol.orgs.list[child_org.id] = child_org + return child_org +end + +function modpol.orgs:add_member(user) + table.insert(self.members, user) +end + +function modpol.orgs:list_member() + print(self.members[1]) +end \ No newline at end of file