with APQ.PostgreSQL.Client;
package Alog.Facilities.Pgsql is
type Instance is new Alog.Facilities.Instance with private;
type Handle is access all Instance;
overriding
procedure Setup (Facility : in out Instance);
overriding
procedure Teardown (Facility : in out Instance);
procedure Set_Host_Name (Facility : in out Instance; Hostname : String);
function Get_Host_Name (Facility : Instance) return String;
procedure Set_Host_Address (Facility : in out Instance; Address : String);
procedure Set_Host_Port (Facility : in out Instance; Port : Natural);
function Get_Host_Port (Facility : Instance) return Natural;
procedure Set_SQL_Trace
(Facility : in out Instance;
Filename : String;
Mode : APQ.Trace_Mode_Type);
procedure Toggle_SQL_Trace
(Facility : in out Instance;
State : Boolean);
function Is_SQL_Trace (Facility : Instance) return Boolean;
procedure Set_DB_Name (Facility : in out Instance; DB_Name : String);
function Get_DB_Name (Facility : Instance) return String;
procedure Set_Table_Name (Facility : in out Instance; Table_Name : String);
function Get_Table_Name (Facility : Instance) return String;
procedure Set_Level_Column_Name
(Facility : in out Instance;
Column_Name : String);
function Get_Level_Column_Name (Facility : Instance) return String;
procedure Set_Timestamp_Column_Name
(Facility : in out Instance;
Column_Name : String);
function Get_Timestamp_Column_Name (Facility : Instance) return String;
procedure Set_Message_Column_Name
(Facility : in out Instance;
Column_Name : String);
function Get_Message_Column_Name (Facility : Instance) return String;
procedure Set_Credentials
(Facility : in out Instance;
Username : String;
Password : String);
function Get_Credentials (Facility : Instance) return String;
procedure Close_Connection (Facility : in out Instance);
private
overriding
procedure Write
(Facility : Instance;
Level : Log_Level := Info;
Msg : String);
type Log_SQL_Table is tagged record
Name : Unbounded_String := To_Unbounded_String ("alog");
Level_Column : Unbounded_String := To_Unbounded_String ("level");
Timestamp_Column : Unbounded_String := To_Unbounded_String ("timestamp");
Message_Column : Unbounded_String := To_Unbounded_String ("message");
end record;
type Instance is new Alog.Facilities.Instance with record
Log_Connection : APQ.PostgreSQL.Client.Connection_Type;
Trace_Filename : Unbounded_String :=
To_Unbounded_String ("./trace.sql");
Trace_Mode : APQ.Trace_Mode_Type := APQ.Trace_APQ;
Log_Table : Log_SQL_Table;
end record;
end Alog.Facilities.Pgsql;