New DODB API.

dev
Philippe PITTOLI 2024-06-01 03:35:53 +02:00
parent 7bee53d625
commit de8beb0df8
3 changed files with 18 additions and 17 deletions

View File

@ -11,7 +11,7 @@ endif
# No idea why, but I need that to run applications. Ignore that. # No idea why, but I need that to run applications. Ignore that.
#LD_P ?= LD_PRELOAD=/usr/local/lib/libipc.so.0 #LD_P ?= LD_PRELOAD=/usr/local/lib/libipc.so.0
OPTS ?= --progress OPTS ?= --progress --no-debug
Q ?= @ Q ?= @
@ -108,4 +108,4 @@ wipe-db:
rm -r $(DBDIR) rm -r $(DBDIR)
release: release:
make build-server OPTS="--release --progress" make build-server OPTS="--release --progress --no-debug"

View File

@ -11,6 +11,7 @@ dependencies:
ipc: ipc:
git: https://git.baguette.netlib.re/Baguette/ipc.cr git: https://git.baguette.netlib.re/Baguette/ipc.cr
dodb: dodb:
branch: master
git: https://git.baguette.netlib.re/Baguette/dodb.cr git: https://git.baguette.netlib.re/Baguette/dodb.cr
authd: authd:
git: https://git.baguette.netlib.re/Baguette/authd git: https://git.baguette.netlib.re/Baguette/authd

View File

@ -7,18 +7,18 @@ require "./service.cr"
require "dodb" require "dodb"
class DNSManager::Storage class DNSManager::Storage
getter domains : DODB::CachedDataBase(Domain) getter domains : DODB::Storage::Cached(Domain)
getter domains_by_name : DODB::CachedIndex(Domain) getter domains_by_name : DODB::Trigger::IndexCached(Domain)
getter domains_by_share_key : DODB::CachedIndex(Domain) getter domains_by_share_key : DODB::Trigger::IndexCached(Domain)
getter domains_by_transfer_key : DODB::CachedIndex(Domain) getter domains_by_transfer_key : DODB::Trigger::IndexCached(Domain)
getter domains_by_owners : DODB::Tags(Domain) getter domains_by_owners : DODB::Trigger::Tags(Domain)
getter zones : DODB::CachedDataBase(Zone) getter zones : DODB::Storage::Cached(Zone)
getter zones_by_domain : DODB::CachedIndex(Zone) getter zones_by_domain : DODB::Trigger::IndexCached(Zone)
getter tokens : DODB::CachedDataBase(Token) getter tokens : DODB::Storage::Cached(Token)
getter tokens_by_uuid : DODB::CachedIndex(Token) getter tokens_by_uuid : DODB::Trigger::IndexCached(Token)
getter tokens_by_domain : DODB::Partition(Token) getter tokens_by_domain : DODB::Trigger::Partition(Token)
getter root : String getter root : String
getter zonefiledir : String getter zonefiledir : String
@ -32,16 +32,16 @@ class DNSManager::Storage
end end
def initialize(@root : String, reindex : Bool = false) def initialize(@root : String, reindex : Bool = false)
@domains = DODB::CachedDataBase(Domain).new "#{@root}/domains" @domains = DODB::Storage::Cached(Domain).new "#{@root}/domains"
@domains_by_name = @domains.new_index "name", &.name @domains_by_name = @domains.new_index "name", &.name
@domains_by_share_key = @domains.new_nilable_index "share-key", do |d| @domains_by_share_key = @domains.new_index "share-key", do |d|
if k = d.share_key if k = d.share_key
k k
else else
DODB.no_index DODB.no_index
end end
end end
@domains_by_transfer_key = @domains.new_nilable_index "transfer-key", do |d| @domains_by_transfer_key = @domains.new_index "transfer-key", do |d|
if k = d.transfer_key if k = d.transfer_key
k k
else else
@ -49,9 +49,9 @@ class DNSManager::Storage
end end
end end
@domains_by_owners = @domains.new_tags "owners", &.owners.map &.to_s @domains_by_owners = @domains.new_tags "owners", &.owners.map &.to_s
@zones = DODB::CachedDataBase(Zone).new "#{@root}/zones" @zones = DODB::Storage::Cached(Zone).new "#{@root}/zones"
@zones_by_domain = @zones.new_index "domain", &.domain @zones_by_domain = @zones.new_index "domain", &.domain
@tokens = DODB::CachedDataBase(Token).new "#{@root}/tokens" @tokens = DODB::Storage::Cached(Token).new "#{@root}/tokens"
@tokens_by_uuid = @tokens.new_index "uuid", &.uuid @tokens_by_uuid = @tokens.new_index "uuid", &.uuid
@tokens_by_domain = @tokens.new_partition "domain", &.domain @tokens_by_domain = @tokens.new_partition "domain", &.domain