|
@@ -245,6 +245,7 @@ Type
|
|
TSQLDBRestAllowRecordEvent = Procedure (aSender : TObject; aContext : TBaseRestContext; aDataSet : TDataset; var allowRecord : Boolean) of object;
|
|
TSQLDBRestAllowRecordEvent = Procedure (aSender : TObject; aContext : TBaseRestContext; aDataSet : TDataset; var allowRecord : Boolean) of object;
|
|
TSQLDBRestAllowResourceEvent = Procedure (aSender : TObject; aContext : TBaseRestContext; var allowResource : Boolean) of object;
|
|
TSQLDBRestAllowResourceEvent = Procedure (aSender : TObject; aContext : TBaseRestContext; var allowResource : Boolean) of object;
|
|
TSQLDBRestAllowedOperationsEvent = Procedure (aSender : TObject; aContext : TBaseRestContext; var aOperations : TRestOperations) of object;
|
|
TSQLDBRestAllowedOperationsEvent = Procedure (aSender : TObject; aContext : TBaseRestContext; var aOperations : TRestOperations) of object;
|
|
|
|
+ TSQLDBRestOnGetWhere = Procedure(Sender : TObject; aContext : TBaseRestContext; aKind : TSQLKind; var aWhere : UTF8String) of object;
|
|
TProcessIdentifier = Function (const S: UTF8String): UTF8String of object;
|
|
TProcessIdentifier = Function (const S: UTF8String): UTF8String of object;
|
|
|
|
|
|
TSQLDBRestResource = class(TCollectionItem)
|
|
TSQLDBRestResource = class(TCollectionItem)
|
|
@@ -259,6 +260,7 @@ Type
|
|
FOnAllowRecord: TSQLDBRestAllowRecordEvent;
|
|
FOnAllowRecord: TSQLDBRestAllowRecordEvent;
|
|
FOnCheckParams: TSQLDBRestCheckParamsEvent;
|
|
FOnCheckParams: TSQLDBRestCheckParamsEvent;
|
|
FOnGetDataset: TSQLDBRestGetDatasetEvent;
|
|
FOnGetDataset: TSQLDBRestGetDatasetEvent;
|
|
|
|
+ FOnGetWhere: TSQLDBRestOnGetWhere;
|
|
FOnResourceAllowed: TSQLDBRestAllowResourceEvent;
|
|
FOnResourceAllowed: TSQLDBRestAllowResourceEvent;
|
|
FParameters: TSQLDBRestParameterList;
|
|
FParameters: TSQLDBRestParameterList;
|
|
FResourceName: UTF8String;
|
|
FResourceName: UTF8String;
|
|
@@ -301,6 +303,7 @@ Type
|
|
Function ProcessSQl(const aSQL : String; Const AWhere : UTF8String; Const aOrderBy : UTF8String = ''; const aLimit : UTF8String = '') : UTF8String;
|
|
Function ProcessSQl(const aSQL : String; Const AWhere : UTF8String; Const aOrderBy : UTF8String = ''; const aLimit : UTF8String = '') : UTF8String;
|
|
Procedure PopulateFieldsFromFieldDefs(Defs : TFieldDefs; aIndexFields : TStringArray; aProcessIdentifier : TProcessIdentifier; aMinFieldOpts : TRestFieldOptions);
|
|
Procedure PopulateFieldsFromFieldDefs(Defs : TFieldDefs; aIndexFields : TStringArray; aProcessIdentifier : TProcessIdentifier; aMinFieldOpts : TRestFieldOptions);
|
|
Procedure PopulateParametersFromSQL(const SQL : String; DoClear : Boolean = True);
|
|
Procedure PopulateParametersFromSQL(const SQL : String; DoClear : Boolean = True);
|
|
|
|
+ function DoCompleteWhere(aContext : TBaseRestContext; aKind: TSQLKind; const aWhere: UTF8String ): UTF8String;
|
|
Property SQL [aKind : TSQLKind] : TStrings Read GetSQLTyped;
|
|
Property SQL [aKind : TSQLKind] : TStrings Read GetSQLTyped;
|
|
Property BusinessProcessor : TSQLDBRestCustomBusinessProcessor Read FBusinessProcessor;
|
|
Property BusinessProcessor : TSQLDBRestCustomBusinessProcessor Read FBusinessProcessor;
|
|
Published
|
|
Published
|
|
@@ -321,6 +324,7 @@ Type
|
|
Property OnGetDataset : TSQLDBRestGetDatasetEvent Read FOnGetDataset Write FOnGetDataset;
|
|
Property OnGetDataset : TSQLDBRestGetDatasetEvent Read FOnGetDataset Write FOnGetDataset;
|
|
Property OnCheckParams : TSQLDBRestCheckParamsEvent Read FOnCheckParams Write FOnCheckParams;
|
|
Property OnCheckParams : TSQLDBRestCheckParamsEvent Read FOnCheckParams Write FOnCheckParams;
|
|
Property OnAllowRecord : TSQLDBRestAllowRecordEvent Read FOnAllowRecord Write FOnAllowRecord;
|
|
Property OnAllowRecord : TSQLDBRestAllowRecordEvent Read FOnAllowRecord Write FOnAllowRecord;
|
|
|
|
+ Property OnGetWhere : TSQLDBRestOnGetWhere Read FOnGetWhere Write FOnGetWhere;
|
|
end;
|
|
end;
|
|
|
|
|
|
{ TSQLDBRestResourceList }
|
|
{ TSQLDBRestResourceList }
|
|
@@ -397,6 +401,7 @@ Type
|
|
Procedure CheckParams(aContext : TBaseRestContext; aOperation : TRestoperation; P : TParams); virtual; abstract;
|
|
Procedure CheckParams(aContext : TBaseRestContext; aOperation : TRestoperation; P : TParams); virtual; abstract;
|
|
Function GetDataset(aContext : TBaseRestContext; aFieldList : TRestFieldPairArray; aOrderBy : TRestFieldOrderPairArray; aLimit, aOffset : Int64) : TDataset; virtual;abstract;
|
|
Function GetDataset(aContext : TBaseRestContext; aFieldList : TRestFieldPairArray; aOrderBy : TRestFieldOrderPairArray; aLimit, aOffset : Int64) : TDataset; virtual;abstract;
|
|
Function AllowRecord(aContext : TBaseRestContext;aDataset : TDataset) : Boolean; virtual; abstract;
|
|
Function AllowRecord(aContext : TBaseRestContext;aDataset : TDataset) : Boolean; virtual; abstract;
|
|
|
|
+ Function ProcessWhereSQL(aContext : TBaseRestContext; aKind : TSQLKind; const aWhere : UTF8String) : UTF8String; virtual;
|
|
Public
|
|
Public
|
|
Property Resource : TSQLDBRestResource Read FResource;
|
|
Property Resource : TSQLDBRestResource Read FResource;
|
|
Property ResourceName : UTF8String Read FResourceName Write SetResourceName;
|
|
Property ResourceName : UTF8String Read FResourceName Write SetResourceName;
|
|
@@ -412,6 +417,7 @@ Type
|
|
FOnAllowRecord: TSQLDBRestAllowRecordEvent;
|
|
FOnAllowRecord: TSQLDBRestAllowRecordEvent;
|
|
FOnCheckParams: TSQLDBRestCheckParamsEvent;
|
|
FOnCheckParams: TSQLDBRestCheckParamsEvent;
|
|
FOnGetDataset: TSQLDBRestGetDatasetEvent;
|
|
FOnGetDataset: TSQLDBRestGetDatasetEvent;
|
|
|
|
+ FOnGetWhere: TSQLDBRestOnGetWhere;
|
|
FOnResourceAllowed: TSQLDBRestAllowResourceEvent;
|
|
FOnResourceAllowed: TSQLDBRestAllowResourceEvent;
|
|
FSchema: TSQLDBRestSchema;
|
|
FSchema: TSQLDBRestSchema;
|
|
FAfterDatabaseRead: TRestDatabaseEvent;
|
|
FAfterDatabaseRead: TRestDatabaseEvent;
|
|
@@ -426,6 +432,7 @@ Type
|
|
Procedure CheckParams(aContext : TBaseRestContext; aOperation : TRestoperation; P : TParams); override;
|
|
Procedure CheckParams(aContext : TBaseRestContext; aOperation : TRestoperation; P : TParams); override;
|
|
Function GetDataset(aContext : TBaseRestContext; aFieldList : TRestFieldPairArray; aOrderBy : TRestFieldOrderPairArray; aLimit, aOffset : Int64) : TDataset; override;
|
|
Function GetDataset(aContext : TBaseRestContext; aFieldList : TRestFieldPairArray; aOrderBy : TRestFieldOrderPairArray; aLimit, aOffset : Int64) : TDataset; override;
|
|
Function AllowRecord(aContext : TBaseRestContext; aDataset : TDataset) : Boolean; override;
|
|
Function AllowRecord(aContext : TBaseRestContext; aDataset : TDataset) : Boolean; override;
|
|
|
|
+ Function ProcessWhereSQL(aContext : TBaseRestContext; aKind : TSQLKind; const aWhere : UTF8String) : UTF8String; override;
|
|
Published
|
|
Published
|
|
Property Schema : TSQLDBRestSchema Read GetSchema Write SetSchema;
|
|
Property Schema : TSQLDBRestSchema Read GetSchema Write SetSchema;
|
|
Property ResourceName;
|
|
Property ResourceName;
|
|
@@ -434,6 +441,7 @@ Type
|
|
Property OnAllowResource : TSQLDBRestAllowResourceEvent Read FOnResourceAllowed Write FOnResourceAllowed;
|
|
Property OnAllowResource : TSQLDBRestAllowResourceEvent Read FOnResourceAllowed Write FOnResourceAllowed;
|
|
Property OnAllowedOperations : TSQLDBRestAllowedOperationsEvent Read FOnAllowedOperations Write FOnAllowedOperations;
|
|
Property OnAllowedOperations : TSQLDBRestAllowedOperationsEvent Read FOnAllowedOperations Write FOnAllowedOperations;
|
|
Property OnAllowRecord : TSQLDBRestAllowRecordEvent Read FOnAllowRecord Write FOnAllowRecord;
|
|
Property OnAllowRecord : TSQLDBRestAllowRecordEvent Read FOnAllowRecord Write FOnAllowRecord;
|
|
|
|
+ Property OnGetWhere : TSQLDBRestOnGetWhere Read FOnGetWhere Write FOnGetWhere;
|
|
Published
|
|
Published
|
|
Property BeforeDatabaseUpdate : TRestDatabaseEvent Read FBeforeDatabaseUpdate Write FBeforeDatabaseUpdate;
|
|
Property BeforeDatabaseUpdate : TRestDatabaseEvent Read FBeforeDatabaseUpdate Write FBeforeDatabaseUpdate;
|
|
Property AfterDatabaseUpdate : TRestDatabaseEvent Read FAfterDatabaseUpdate Write FAfterDatabaseUpdate;
|
|
Property AfterDatabaseUpdate : TRestDatabaseEvent Read FAfterDatabaseUpdate Write FAfterDatabaseUpdate;
|
|
@@ -607,6 +615,15 @@ begin
|
|
Result:=Nil;
|
|
Result:=Nil;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function TSQLDBRestCustomBusinessProcessor.ProcessWhereSQL(aContext : TBaseRestContext; aKind : TSQLKind; const aWhere: UTF8String
|
|
|
|
+ ): UTF8String;
|
|
|
|
+begin
|
|
|
|
+ Result:=aWhere;
|
|
|
|
+ // Silence compiler
|
|
|
|
+ if aKind<>skSelect then
|
|
|
|
+ ;
|
|
|
|
+end;
|
|
|
|
+
|
|
{ TSQLDBRestBusinessProcessor }
|
|
{ TSQLDBRestBusinessProcessor }
|
|
|
|
|
|
procedure TSQLDBRestBusinessProcessor.SetSchema(AValue: TSQLDBRestSchema);
|
|
procedure TSQLDBRestBusinessProcessor.SetSchema(AValue: TSQLDBRestSchema);
|
|
@@ -670,6 +687,14 @@ begin
|
|
FOnAllowRecord(Self,acontext,aDataset,Result);
|
|
FOnAllowRecord(Self,acontext,aDataset,Result);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function TSQLDBRestBusinessProcessor.ProcessWhereSQL(aContext : TBaseRestContext; aKind: TSQLKind;
|
|
|
|
+ const aWhere: UTF8String): UTF8String;
|
|
|
|
+begin
|
|
|
|
+ Result:=inherited ProcessWhereSQL(aContext, aKind, aWhere);
|
|
|
|
+ if Assigned(FOnGetWhere) then
|
|
|
|
+ FOnGetWhere(Self,aContext,aKind,Result);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
{ ESQLDBRest }
|
|
{ ESQLDBRest }
|
|
@@ -1442,6 +1467,16 @@ begin
|
|
Result:=ProcessSQL(Result,aWhere,aOrderBy,aLimit);
|
|
Result:=ProcessSQL(Result,aWhere,aOrderBy,aLimit);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+function TSQLDBRestResource.DoCompleteWhere(aContext : TBaseRestContext; aKind: TSQLKind;const aWhere : UTF8String) : UTF8String;
|
|
|
|
+
|
|
|
|
+begin
|
|
|
|
+ Result:=aWhere;
|
|
|
|
+ if Assigned(OnGetWhere) then
|
|
|
|
+ FOnGetWhere(Self,aContext, aKind,Result);
|
|
|
|
+ if Assigned(BusinessProcessor) then
|
|
|
|
+ Result:=BusinessProcessor.ProcessWhereSQL(aContext, aKind, Result);
|
|
|
|
+end;
|
|
|
|
+
|
|
function TSQLDBRestResource.ProcessSQl(const aSQL: String; const AWhere: UTF8String;
|
|
function TSQLDBRestResource.ProcessSQl(const aSQL: String; const AWhere: UTF8String;
|
|
const aOrderBy: UTF8String; const aLimit: UTF8String): UTF8String;
|
|
const aOrderBy: UTF8String; const aLimit: UTF8String): UTF8String;
|
|
|
|
|