summaryrefslogtreecommitdiff
path: root/src/deckdata-io.ads
diff options
context:
space:
mode:
Diffstat (limited to 'src/deckdata-io.ads')
-rw-r--r--src/deckdata-io.ads92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/deckdata-io.ads b/src/deckdata-io.ads
new file mode 100644
index 0000000..acdcda3
--- /dev/null
+++ b/src/deckdata-io.ads
@@ -0,0 +1,92 @@
+
+
+-- This source is licensed under the Sunset License v1.0
+
+
+private with
+
+ Ada.Finalization,
+ SQLite3;
+
+
+package Deckdata.IO is
+
+
+ use type SU.Unbounded_String;
+
+
+ type Deck_Handle is limited private;
+
+
+ function Matches
+ (Models : in Model_Map;
+ Notes : in Note_Vector)
+ return Boolean;
+
+
+ procedure Read_Media_Collection
+ (Filename : in String;
+ Media : out Media_Collection);
+
+
+ procedure Open_Database
+ (Filename : in String;
+ Deck : in out Deck_Handle)
+ with Post => Is_Open (Deck);
+
+ function Is_Open
+ (Deck : in Deck_Handle)
+ return Boolean;
+
+ procedure Close_Database
+ (Deck : in out Deck_Handle)
+ with Post => not Is_Open (Deck);
+
+ procedure Query_Models
+ (Deck : in out Deck_Handle;
+ Models : out Model_Map)
+ with Pre => Is_Open (Deck);
+
+ procedure Query_Notes
+ (Deck : in out Deck_Handle;
+ Notes : out Note_Vector)
+ with Pre => Is_Open (Deck);
+
+
+ procedure Write_CSV
+ (Directory : in String;
+ Basename : in String;
+ Models : in Model_Map;
+ Notes : in Note_Vector;
+ Overwrite : in Boolean := False)
+ with Pre => Matches (Models, Notes);
+
+ procedure Write_FMD
+ (Directory : in String;
+ Basename : in String;
+ Models : in Model_Map;
+ Notes : in Note_Vector;
+ Media : in Media_Collection;
+ Overwrite : in Boolean := False)
+ with Pre => Matches (Models, Notes);
+
+
+private
+
+
+ type Deck_Handle is new Ada.Finalization.Limited_Controlled with record
+ SQL_Handle : SQLite3.SQLite3_DB;
+ Status : SQLite3.Status_Code := SQLite3.SQLITE_OK;
+ Opened : Boolean := False;
+ Tempfile : SU.Unbounded_String := SU.To_Unbounded_String ("");
+ end record;
+
+
+ overriding
+ procedure Finalize
+ (This : in out Deck_Handle);
+
+
+end Deckdata.IO;
+
+