diff options
Diffstat (limited to 'src/deckdata-io.ads')
-rw-r--r-- | src/deckdata-io.ads | 92 |
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; + + |