File

doc/storage.tld @ 11349:a219001b449d

mod_http_file_share: Update cached value while it is reasonably fresh This should ensure that cache entries until the oldest file that counted to the last 24h becomes older than 24h.
author Kim Alvefur <zash@zash.se>
date Sun, 31 Jan 2021 17:44:19 +0100
parent 10838:f26f2ec33f1e
line wrap: on
line source

-- Storage Interface API Description
--
-- This is written as a TypedLua description

-- Key-Value stores (the default)

interface keyval_store
	get : ( self, string? ) -> (any) | (nil, string)
	set : ( self, string?, any ) -> (boolean) | (nil, string)
end

-- Map stores (key-key-value stores)

interface map_store
	get : ( self, string?, any ) -> (any) | (nil, string)
	set : ( self, string?, any, any ) -> (boolean) | (nil, string)
	set_keys : ( self, string?, { any : any }) -> (boolean) | (nil, string)
	remove : {}
end

-- Archive stores

typealias archive_query = {
	"start"  : number?, -- timestamp
	"end"    : number?, -- timestamp
	"with"   : string?,
	"after"  : string?, -- archive id
	"before" : string?, -- archive id
	"total"  : boolean?,
}

interface archive_store
	-- Optional set of capabilities
	caps   : {
		-- Optional total count of matching items returned as second return value from :find()
		"total" : boolean?,
	}?

	-- Add to the archive
	append : ( self, string?, string?, any, number?, string? ) -> (string) | (nil, string)

	-- Iterate over archive
	find   : ( self, string?, archive_query? ) -> ( () -> ( string, any, number?, string? ), integer? )

	-- Removal of items. API like find. Optional?
	delete : ( self, string?, archive_query? ) -> (boolean) | (number) | (nil, string)

	-- Array of dates which do have messages (Optional?)
	dates  : ( self, string? ) -> ({ string }) | (nil, string)

	-- Map of counts per "with" field
	summary : ( self, string?, archive_query? ) -> ( { string : integer } ) | (nil, string)

	-- Map-store API
	get    : ( self, string, string ) -> (stanza, number?, string?) | (nil, string)
	set    : ( self, string, string, stanza, number?, string? ) -> (boolean) | (nil, string)
end

-- This represents moduleapi
interface module
	-- If the first string is omitted then the name of the module is used
	-- The second string is one of "keyval" (default), "map" or "archive"
	open_store : (self, string?, string?) -> (keyval_store) | (map_store) | (archive_store) | (nil, string)

	-- Other module methods omitted
end

module : module