1-- This file is covered by the Internet Software Consortium (ISC) License 2-- Reference: ../../License.txt 3 4with CommonText; 5with AdaBase.Connection.Base; 6with AdaBase.Logger.Facility; 7with AdaBase.Interfaces.Driver; 8 9package AdaBase.Driver.Base is 10 11 package CT renames CommonText; 12 package ACB renames AdaBase.Connection.Base; 13 package ALF renames AdaBase.Logger.Facility; 14 package AID renames AdaBase.Interfaces.Driver; 15 16 type Base_Driver is abstract new Base_Pure and AID.iDriver with private; 17 18 overriding 19 procedure command_standard_logger (driver : Base_Driver; 20 device : ALF.TLogger; 21 action : ALF.TAction); 22 23 overriding 24 procedure set_logger_filename (driver : Base_Driver; filename : String); 25 26 overriding 27 procedure detach_custom_logger (driver : Base_Driver); 28 29 overriding 30 procedure attach_custom_logger 31 (driver : Base_Driver; 32 logger_access : ALF.AL.BaseClass_Logger_access); 33 34 overriding 35 procedure disconnect (driver : out Base_Driver); 36 37 overriding 38 procedure rollback (driver : Base_Driver); 39 40 overriding 41 procedure commit (driver : Base_Driver); 42 43 overriding 44 function last_insert_id (driver : Base_Driver) return Trax_ID; 45 46 overriding 47 function last_sql_state (driver : Base_Driver) return SQL_State; 48 49 overriding 50 function last_driver_code (driver : Base_Driver) return Driver_Codes; 51 52 overriding 53 function last_driver_message (driver : Base_Driver) return String; 54 55 overriding 56 procedure basic_connect (driver : out Base_Driver; 57 database : String; 58 username : String := blankstring; 59 password : String := blankstring; 60 socket : String := blankstring); 61 62 overriding 63 procedure basic_connect (driver : out Base_Driver; 64 database : String; 65 username : String := blankstring; 66 password : String := blankstring; 67 hostname : String := blankstring; 68 port : Posix_Port); 69 70 overriding 71 function trait_autocommit (driver : Base_Driver) 72 return Boolean; 73 74 overriding 75 function trait_column_case (driver : Base_Driver) 76 return Case_Modes; 77 78 overriding 79 function trait_error_mode (driver : Base_Driver) 80 return Error_Modes; 81 82 overriding 83 function trait_connected (driver : Base_Driver) 84 return Boolean; 85 86 overriding 87 function trait_driver (driver : Base_Driver) 88 return String; 89 90 overriding 91 function trait_client_info (driver : Base_Driver) 92 return String; 93 94 overriding 95 function trait_client_version (driver : Base_Driver) 96 return String; 97 98 overriding 99 function trait_server_info (driver : Base_Driver) 100 return String; 101 102 overriding 103 function trait_server_version (driver : Base_Driver) 104 return String; 105 106 overriding 107 function trait_max_blob_size (driver : Base_Driver) 108 return BLOB_Maximum; 109 110 overriding 111 function trait_multiquery_enabled (driver : Base_Driver) 112 return Boolean; 113 114 overriding 115 function trait_character_set (driver : Base_Driver) 116 return String; 117 118 overriding 119 procedure set_trait_multiquery_enabled (driver : Base_Driver; 120 trait : Boolean); 121 122 overriding 123 procedure set_trait_autocommit (driver : Base_Driver; 124 trait : Boolean); 125 126 overriding 127 procedure set_trait_column_case (driver : Base_Driver; 128 trait : Case_Modes); 129 130 overriding 131 procedure set_trait_error_mode (driver : Base_Driver; 132 trait : Error_Modes); 133 134 overriding 135 procedure set_trait_max_blob_size (driver : Base_Driver; 136 trait : BLOB_Maximum); 137 138 overriding 139 procedure set_trait_character_set (driver : Base_Driver; 140 trait : String); 141 142 overriding 143 procedure query_clear_table (driver : Base_Driver; 144 table : String); 145 146 overriding 147 procedure query_drop_table (driver : Base_Driver; 148 tables : String; 149 when_exists : Boolean := False; 150 cascade : Boolean := False); 151 152private 153 154 logger : aliased ALF.LogFacility; 155 156 type Base_Driver is abstract new Base_Pure and AID.iDriver with 157 record 158 connection : ACB.Base_Connection_Access; 159 connection_active : Boolean := False; 160 dialect : Driver_Type := foundation; 161 database : CT.Text := CT.blank; 162 end record; 163 164 procedure log_nominal (driver : Base_Driver; 165 category : Log_Category; 166 message : CT.Text); 167 168 procedure log_problem 169 (driver : Base_Driver; 170 category : Log_Category; 171 message : CT.Text; 172 pull_codes : Boolean := False; 173 break : Boolean := False); 174 175 overriding 176 procedure initialize (Object : in out Base_Driver) is null; 177 178 function assembly_common_select (distinct : Boolean; 179 tables : String; 180 columns : String; 181 conditions : String; 182 groupby : String; 183 having : String; 184 order : String) return String; 185 186 procedure private_connect (driver : out Base_Driver; 187 database : String; 188 username : String; 189 password : String; 190 hostname : String := blankstring; 191 socket : String := blankstring; 192 port : Posix_Port := portless) is null; 193 194end AdaBase.Driver.Base; 195