mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-05-04 18:44:21 +02:00
133 lines
4.0 KiB
ObjectPascal
133 lines
4.0 KiB
ObjectPascal
unit dmRestBridge;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, sqldbrestbridge, sqldbrestschema, pqconnection, ibconnection, sqldbrestauth,db,
|
|
// Register formats
|
|
sqldbrestcsv ,sqldbrestxml, sqldbrestcds, sqldbrestado;
|
|
|
|
type
|
|
|
|
{ TRestDataModule }
|
|
|
|
TRestDataModule = class(TDataModule)
|
|
AuthBasic: TRestBasicAuthenticator;
|
|
Dispatcher: TSQLDBRestDispatcher;
|
|
ExpensesSchema: TSQLDBRestSchema;
|
|
BPProjects: TSQLDBRestBusinessProcessor;
|
|
procedure DataModuleCreate(Sender: TObject);
|
|
procedure DispatcherLog(Sender: TObject; aType: TRestDispatcherLogOption;
|
|
const aMessage: UTF8String);
|
|
procedure DoAllowedOperations(aSender: TObject; aContext: TBaseRestContext; var aOperations: TRestOperations);
|
|
procedure DoAllowedRecord(aSender: TObject; aContext: TBaseRestContext; aDataSet: TDataset; var allowRecord: Boolean);
|
|
procedure DoAllowResource(aSender: TObject; aContext: TBaseRestContext; var allowResource: Boolean);
|
|
procedure DoCheckParams(aSender: TObject; aContext: TBaseRestContext; aOperation: TRestOperation; Params: TParams);
|
|
procedure DoGetDataset(aSender: TObject; aContext: TBaseRestContext; aFieldList: TRestFieldPairArray; aOrderBy: TRestFieldOrderPairArray; aLimit, aOffset: Int64; var aDataset: TDataset);
|
|
private
|
|
public
|
|
|
|
end;
|
|
|
|
var
|
|
RestDataModule: TRestDataModule;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
uses sqldbrestini, custapp;
|
|
|
|
{ TRestDataModule }
|
|
|
|
procedure TRestDataModule.DataModuleCreate(Sender: TObject);
|
|
|
|
Var
|
|
D,Cfg : String;
|
|
|
|
begin
|
|
D:=ExtractFilePath(ParamStr(0));
|
|
if CustomApplication.Hasoption('c','connection') then
|
|
Cfg:=CustomApplication.GetoptionValue('c','connection')
|
|
else
|
|
Cfg:=D+'connection.ini';
|
|
if FileExists(Cfg) then
|
|
Dispatcher.Connections[0].LoadFromIniFile('connection.ini');
|
|
if CustomApplication.Hasoption('c','connection') then
|
|
Cfg:=CustomApplication.GetoptionValue('i','ini')
|
|
else
|
|
Cfg:=D+'server.ini';
|
|
if FileExists(Cfg) then
|
|
Dispatcher.LoadFromFile('server.ini',[]);
|
|
// Manual config
|
|
if CustomApplication.Hasoption('b','basedir') then
|
|
Dispatcher.BasePath:=CustomApplication.GetoptionValue('b','basedir');
|
|
if CustomApplication.HasOption('q','quiet') then
|
|
begin
|
|
Dispatcher.OnLog:=Nil;
|
|
Dispatcher.LogOptions:=[];
|
|
end
|
|
else if CustomApplication.HasOption('v','verbose') then
|
|
Dispatcher.LogOptions:=Dispatcher.LogOptions+[rloSQL];
|
|
// Activate
|
|
Dispatcher.Active:=True;
|
|
end;
|
|
|
|
procedure TRestDataModule.DispatcherLog(Sender: TObject;
|
|
aType: TRestDispatcherLogOption; const aMessage: UTF8String);
|
|
begin
|
|
if isConsole then
|
|
Writeln('['+LogNames[aType]+'] '+aMessage)
|
|
else if Assigned(CustomApplication) then
|
|
CustomApplication.Log(etInfo,'['+LogNames[aType]+'] '+aMessage);
|
|
end;
|
|
|
|
procedure TRestDataModule.DoAllowedOperations(aSender: TObject;
|
|
aContext: TBaseRestContext; var aOperations: TRestOperations);
|
|
begin
|
|
if IsConsole then
|
|
Writeln('[Debug] AllowedOperations for ',aContext.UserID);
|
|
end;
|
|
|
|
procedure TRestDataModule.DoAllowedRecord(aSender: TObject;
|
|
aContext: TBaseRestContext; aDataSet: TDataset; var allowRecord: Boolean);
|
|
begin
|
|
if IsConsole then
|
|
Writeln('[Debug] AllowedRecord for ',aContext.UserID);
|
|
AllowRecord:=True;
|
|
end;
|
|
|
|
procedure TRestDataModule.DoAllowResource(aSender: TObject;
|
|
aContext: TBaseRestContext; var allowResource: Boolean);
|
|
begin
|
|
if IsConsole then
|
|
Writeln('[Debug] AllowedResource for ',aContext.UserID);
|
|
end;
|
|
|
|
procedure TRestDataModule.DoCheckParams(aSender: TObject;
|
|
aContext: TBaseRestContext; aOperation: TRestOperation; Params: TParams);
|
|
|
|
Var
|
|
P : TParam;
|
|
begin
|
|
if IsConsole then
|
|
begin
|
|
Writeln('CheckParams for ',aContext.UserID,', aOperation : ',aOperation);
|
|
For P in Params do
|
|
Writeln('Param ',P.Name,' : ',P.AsString);
|
|
end;
|
|
end;
|
|
|
|
procedure TRestDataModule.DoGetDataset(aSender: TObject;
|
|
aContext: TBaseRestContext; aFieldList: TRestFieldPairArray;
|
|
aOrderBy: TRestFieldOrderPairArray; aLimit, aOffset: Int64;
|
|
var aDataset: TDataset);
|
|
begin
|
|
Writeln('DoGetDataset for ',aContext.UserID);
|
|
end;
|
|
|
|
end.
|
|
|