Changeset

12607:8943ae10f7e8

core.storagemanager: Convert old Typed Lua description file into Teal Still only a type definition. Typed Lua is no longer maintained. Teal is currently an active project.
author Kim Alvefur <zash@zash.se>
date Wed, 24 Mar 2021 20:23:38 +0100
parents 12606:6683beb96e01
children 12608:946a11f794e2
files doc/storage.tld teal-src/core/storagemanager.d.tl
diffstat 2 files changed, 74 insertions(+), 68 deletions(-) [+]
line wrap: on
line diff
--- a/doc/storage.tld	Wed Aug 10 13:45:43 2022 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
--- 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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/teal-src/core/storagemanager.d.tl	Wed Mar 24 20:23:38 2021 +0100
@@ -0,0 +1,74 @@
+-- Storage local record API Description
+--
+-- This is written as a TypedLua description
+
+-- Key-Value stores (the default)
+
+local stanza = require"util.stanza".stanza_t
+
+local record keyval_store
+	get : function ( keyval_store, string ) : any , string
+	set : function ( keyval_store, string, any ) : boolean, string
+end
+
+-- Map stores (key-key-value stores)
+
+local record map_store
+	get : function ( map_store, string, any ) : any, string
+	set : function ( map_store, string, any, any ) : boolean, string
+	set_keys : function ( map_store, string, { any : any }) : boolean, string
+	remove : table
+end
+
+-- Archive stores
+
+local record archive_query
+	start  : number -- timestamp
+	["end"]: number -- timestamp
+	with   : string
+	after  : string -- archive id
+	before : string -- archive id
+	total  : boolean
+end
+
+local record archive_store
+	-- Optional set of capabilities
+	caps   : {
+		-- Optional total count of matching items returned as second return value from :find()
+		string : any
+	}
+
+	-- Add to the archive
+	append : function ( archive_store, string, string, any, number, string ) : string, string
+
+	-- Iterate over archive
+	type iterator = function () : string, any, number, string
+	find   : function ( archive_store, string, archive_query ) : iterator, integer
+
+	-- Removal of items. API like find. Optional
+	delete : function ( archive_store, string, archive_query ) : boolean | number, string
+
+	-- Array of dates which do have messages (Optional)
+	dates  : function ( archive_store, string ) : { string }, string
+
+	-- Map of counts per "with" field
+	summary : function ( archive_store, string, archive_query ) : { string : integer }, string
+
+	-- Map-store API
+	get    : function ( archive_store, string, string ) : stanza, number, string
+	get    : function ( archive_store, string, string ) : nil, string
+	set    : function ( archive_store, string, string, stanza, number, string ) : boolean, string
+end
+
+-- This represents moduleapi
+local record coremodule
+	-- 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 : function (archive_store, string, string) : keyval_store, string
+	open_store : function (archive_store, string, string) : map_store, string
+	open_store : function (archive_store, string, string) : archive_store, string
+
+	-- Other module methods omitted
+end
+
+return coremodule