aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2021-03-24 20:23:38 +0100
committerKim Alvefur <zash@zash.se>2021-03-24 20:23:38 +0100
commita8332d2427bf918336f3b0353e28c13280ddd49d (patch)
tree864a723a213065adfb93a0835de642f11f882437
parent8e3e3f3bcd5dab436ac15f55c4244b20027ebabc (diff)
downloadprosody-a8332d2427bf918336f3b0353e28c13280ddd49d.tar.gz
prosody-a8332d2427bf918336f3b0353e28c13280ddd49d.zip
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.
-rw-r--r--doc/storage.tld68
-rw-r--r--teal-src/core/storagemanager.d.tl74
2 files changed, 74 insertions, 68 deletions
diff --git a/doc/storage.tld b/doc/storage.tld
deleted file mode 100644
index 0fc8ff54..00000000
--- a/doc/storage.tld
+++ /dev/null
@@ -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
diff --git a/teal-src/core/storagemanager.d.tl b/teal-src/core/storagemanager.d.tl
new file mode 100644
index 00000000..3c8253b1
--- /dev/null
+++ b/teal-src/core/storagemanager.d.tl
@@ -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