1--  This file is covered by the Internet Software Consortium (ISC) License
2--  Reference: ../../License.txt
3
4with AdaBase.Interfaces.Driver;
5with AdaBase.Connection.Base.SQLite;
6with AdaBase.Statement.Base.SQLite;
7
8package AdaBase.Driver.Base.SQLite is
9
10   package AID renames AdaBase.Interfaces.Driver;
11   package ACS renames AdaBase.Connection.Base.SQLite;
12   package ASS renames AdaBase.Statement.Base.SQLite;
13
14   type SQLite_Driver is new Base_Driver and AID.iDriver with private;
15
16   overriding
17   function execute (driver : SQLite_Driver; sql : String)
18                     return Affected_Rows;
19
20   overriding
21   procedure query_drop_table  (driver      : SQLite_Driver;
22                                tables      : String;
23                                when_exists : Boolean := False;
24                                cascade     : Boolean := False);
25
26   overriding
27   procedure query_clear_table (driver : SQLite_Driver;
28                                table  : String);
29
30   function query              (driver : SQLite_Driver;
31                                sql    : String)
32                                return ASS.SQLite_statement;
33
34   function prepare            (driver : SQLite_Driver;
35                                sql    : String)
36                                return ASS.SQLite_statement;
37
38   function query_select   (driver     : SQLite_Driver;
39                            distinct   : Boolean := False;
40                            tables     : String;
41                            columns    : String;
42                            conditions : String := blankstring;
43                            groupby    : String := blankstring;
44                            having     : String := blankstring;
45                            order      : String := blankstring;
46                            null_sort  : Null_Priority := native;
47                            limit      : Trax_ID := 0;
48                            offset     : Trax_ID := 0)
49                            return ASS.SQLite_statement;
50
51   function prepare_select (driver     : SQLite_Driver;
52                            distinct   : Boolean := False;
53                            tables     : String;
54                            columns    : String;
55                            conditions : String := blankstring;
56                            groupby    : String := blankstring;
57                            having     : String := blankstring;
58                            order      : String := blankstring;
59                            null_sort  : Null_Priority := native;
60                            limit      : Trax_ID := 0;
61                            offset     : Trax_ID := 0)
62                            return ASS.SQLite_statement;
63
64   function call_stored_procedure (driver           : SQLite_Driver;
65                                   stored_procedure : String;
66                                   proc_arguments   : String)
67                                   return ASS.SQLite_statement;
68
69private
70
71   type SQLite_Driver is new Base_Driver and AID.iDriver with
72      record
73         local_connection : aliased ACS.SQLite_Connection;
74      end record;
75
76   overriding
77   procedure private_connect (driver   : out SQLite_Driver;
78                              database : String;
79                              username : String;
80                              password : String;
81                              hostname : String     := blankstring;
82                              socket   : String     := blankstring;
83                              port     : Posix_Port := portless);
84
85   function private_statement (driver   : SQLite_Driver;
86                               sql      : String;
87                               prepared : Boolean)
88                               return ASS.SQLite_statement;
89
90   function sql_assemble (driver     : SQLite_Driver;
91                          distinct   : Boolean := False;
92                          tables     : String;
93                          columns    : String;
94                          conditions : String := blankstring;
95                          groupby    : String := blankstring;
96                          having     : String := blankstring;
97                          order      : String := blankstring;
98                          null_sort  : Null_Priority := native;
99                          limit      : Trax_ID := 0;
100                          offset     : Trax_ID := 0) return String;
101
102   overriding
103   procedure initialize (Object : in out SQLite_Driver);
104
105end AdaBase.Driver.Base.SQLite;
106