Skip to content

Commit 7b28e55

Browse files
Remove warnings
1 parent f835ebc commit 7b28e55

1 file changed

Lines changed: 147 additions & 147 deletions

File tree

src/core/Ragna.Criteria.Impl.pas

Lines changed: 147 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1,149 +1,149 @@
11
unit Ragna.Criteria.Impl;
2-
3-
{$IF DEFINED(FPC)}
4-
{$MODE DELPHI}{$H+}
5-
{$ENDIF}
6-
7-
interface
8-
9-
uses {$IFDEF UNIDAC}Uni{$ELSE}FireDAC.Comp.Client, FireDAC.Stan.Param{$ENDIF},
10-
StrUtils, Data.DB, System.Hash, Ragna.Criteria.Intf, Ragna.Types;
11-
12-
type
13-
TDefaultCriteria = class(TInterfacedObject, ICriteria)
14-
private
15-
FQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF};
16-
procedure Where(const AField: string);
17-
procedure &Or(const AField: string);
18-
procedure &And(const AField: string);
19-
procedure Like(const AValue: string);
20-
procedure &Equals(const AValue: Int64); overload;
21-
procedure &Equals(const AValue: Boolean); overload;
22-
procedure &Equals(const AValue: string); overload;
23-
procedure Order(const AField: string);
24-
public
25-
constructor Create(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF});
26-
end;
27-
28-
TManagerCriteria = class
29-
private
30-
FCriteria: ICriteria;
31-
function GetDrive(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF}): string;
32-
function GetInstanceCriteria(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF}): ICriteria;
33-
public
34-
constructor Create(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF});
35-
property Criteria: ICriteria read FCriteria write FCriteria;
36-
end;
37-
38-
implementation
39-
40-
uses FireDAC.Stan.Intf, SysUtils;
41-
42-
procedure TDefaultCriteria.&And(const AField: string);
43-
const
44-
PHRASE = '%s %s';
45-
begin
46-
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.AND.ToString, AField]));
47-
end;
48-
49-
procedure TDefaultCriteria.&Or(const AField: string);
50-
const
51-
PHRASE = ' %s %s';
52-
begin
53-
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.OR.ToString, AField]));
54-
end;
55-
56-
constructor TDefaultCriteria.Create(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF});
57-
begin
58-
FQuery := AQuery;
59-
end;
60-
61-
procedure TDefaultCriteria.Equals(const AValue: Boolean);
62-
const
63-
PHRASE = '%s %s';
64-
begin
65-
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.EQUALS.ToString, BoolToStr(AValue, True)]));
66-
end;
67-
68-
procedure TDefaultCriteria.Equals(const AValue: Int64);
69-
const
70-
PHRASE = '%s %d';
71-
begin
72-
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.EQUALS.ToString, AValue]));
73-
end;
74-
75-
procedure TDefaultCriteria.Equals(const AValue: string);
76-
const
77-
PHRASE = '%s ''%s''';
78-
begin
79-
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.EQUALS.ToString, AValue]));
80-
end;
81-
82-
procedure TDefaultCriteria.Like(const AValue: string);
83-
const
84-
PHRASE = ' %s %s';
85-
var
86-
LKeyParam: string;
87-
LParam: {$IFDEF UNIDAC}TUniParam{$ELSE}TFDParam{$ENDIF};
88-
begin
89-
LKeyParam := THashMD5.Create.HashAsString;
90-
FQuery.SQL.Text := FQuery.SQL.Text + Format(PHRASE, [TOperatorType.LIKE.ToString, ':' + LKeyParam]);
91-
LParam := FQuery.ParamByName(LKeyParam);
92-
LParam.DataType := ftString;
93-
if Pos('%', AValue) <= 0 then
94-
LParam.Value := AValue + '%'
95-
else
96-
LParam.Value := AValue;
97-
end;
98-
99-
procedure TDefaultCriteria.Where(const AField: string);
100-
const
101-
PHRASE = '%s %s';
102-
begin
103-
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.WHERE.ToString, AField]));
104-
end;
105-
106-
procedure TDefaultCriteria.Order(const AField: string);
107-
const
108-
PHRASE = '%s %s';
109-
begin
110-
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.ORDER.ToString, AField]));
111-
end;
112-
113-
constructor TManagerCriteria.Create(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF});
114-
begin
115-
FCriteria := GetInstanceCriteria(AQuery);
116-
end;
117-
118-
function TManagerCriteria.GetDrive(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF}): string;
119-
{$IFDEF UNIDAC}
120-
begin
121-
Result := AQuery.Connection.ProviderName;
122-
end;
123-
{$ELSE}
124-
var
125-
LDef: IFDStanConnectionDef;
126-
begin
127-
Result := AQuery.Connection.DriverName;
128-
if Result.IsEmpty and not AQuery.Connection.ConnectionDefName.IsEmpty then
129-
begin
130-
LDef := FDManager.ConnectionDefs.FindConnectionDef(AQuery.Connection.ConnectionDefName);
131-
if LDef = nil then
132-
raise Exception.Create('ConnectionDefs "' + AQuery.Connection.ConnectionDefName + '" not found');
133-
Result := LDef.Params.DriverID;
134-
end;
135-
end;
136-
{$ENDIF}
137-
138-
function TManagerCriteria.GetInstanceCriteria(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF}): ICriteria;
139-
begin
140-
case AnsiIndexStr(GetDrive(AQuery), ['PG']) of
141-
0:
142-
Result := TDefaultCriteria.Create(AQuery);
143-
else
144-
Result := TDefaultCriteria.Create(AQuery);
145-
end;
146-
end;
147-
2+
3+
{$IF DEFINED(FPC)}
4+
{$MODE DELPHI}{$H+}
5+
{$ENDIF}
6+
7+
interface
8+
9+
uses {$IFDEF UNIDAC}Uni{$ELSE}FireDAC.Comp.Client, FireDAC.Stan.Param{$ENDIF},
10+
StrUtils, Data.DB, System.Hash, Ragna.Criteria.Intf, Ragna.Types;
11+
12+
type
13+
TDefaultCriteria = class(TInterfacedObject, ICriteria)
14+
private
15+
FQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF};
16+
procedure Where(const AField: string);
17+
procedure &Or(const AField: string);
18+
procedure &And(const AField: string);
19+
procedure Like(const AValue: string);
20+
procedure &Equals(const AValue: Int64); reintroduce; overload;
21+
procedure &Equals(const AValue: Boolean); reintroduce; overload;
22+
procedure &Equals(const AValue: string); reintroduce; overload;
23+
procedure Order(const AField: string);
24+
public
25+
constructor Create(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF});
26+
end;
27+
28+
TManagerCriteria = class
29+
private
30+
FCriteria: ICriteria;
31+
function GetDrive(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF}): string;
32+
function GetInstanceCriteria(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF}): ICriteria;
33+
public
34+
constructor Create(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF});
35+
property Criteria: ICriteria read FCriteria write FCriteria;
36+
end;
37+
38+
implementation
39+
40+
uses FireDAC.Stan.Intf, SysUtils;
41+
42+
procedure TDefaultCriteria.&And(const AField: string);
43+
const
44+
PHRASE = '%s %s';
45+
begin
46+
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.AND.ToString, AField]));
47+
end;
48+
49+
procedure TDefaultCriteria.&Or(const AField: string);
50+
const
51+
PHRASE = ' %s %s';
52+
begin
53+
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.OR.ToString, AField]));
54+
end;
55+
56+
constructor TDefaultCriteria.Create(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF});
57+
begin
58+
FQuery := AQuery;
59+
end;
60+
61+
procedure TDefaultCriteria.Equals(const AValue: Boolean);
62+
const
63+
PHRASE = '%s %s';
64+
begin
65+
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.EQUALS.ToString, BoolToStr(AValue, True)]));
66+
end;
67+
68+
procedure TDefaultCriteria.Equals(const AValue: Int64);
69+
const
70+
PHRASE = '%s %d';
71+
begin
72+
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.EQUALS.ToString, AValue]));
73+
end;
74+
75+
procedure TDefaultCriteria.Equals(const AValue: string);
76+
const
77+
PHRASE = '%s ''%s''';
78+
begin
79+
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.EQUALS.ToString, AValue]));
80+
end;
81+
82+
procedure TDefaultCriteria.Like(const AValue: string);
83+
const
84+
PHRASE = ' %s %s';
85+
var
86+
LKeyParam: string;
87+
LParam: {$IFDEF UNIDAC}TUniParam{$ELSE}TFDParam{$ENDIF};
88+
begin
89+
LKeyParam := THashMD5.Create.HashAsString;
90+
FQuery.SQL.Text := FQuery.SQL.Text + Format(PHRASE, [TOperatorType.LIKE.ToString, ':' + LKeyParam]);
91+
LParam := FQuery.ParamByName(LKeyParam);
92+
LParam.DataType := ftString;
93+
if Pos('%', AValue) <= 0 then
94+
LParam.Value := AValue + '%'
95+
else
96+
LParam.Value := AValue;
97+
end;
98+
99+
procedure TDefaultCriteria.Where(const AField: string);
100+
const
101+
PHRASE = '%s %s';
102+
begin
103+
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.WHERE.ToString, AField]));
104+
end;
105+
106+
procedure TDefaultCriteria.Order(const AField: string);
107+
const
108+
PHRASE = '%s %s';
109+
begin
110+
FQuery.SQL.Add(Format(PHRASE, [TOperatorType.ORDER.ToString, AField]));
111+
end;
112+
113+
constructor TManagerCriteria.Create(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF});
114+
begin
115+
FCriteria := GetInstanceCriteria(AQuery);
116+
end;
117+
118+
function TManagerCriteria.GetDrive(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF}): string;
119+
{$IFDEF UNIDAC}
120+
begin
121+
Result := AQuery.Connection.ProviderName;
122+
end;
123+
{$ELSE}
124+
var
125+
LDef: IFDStanConnectionDef;
126+
begin
127+
Result := AQuery.Connection.DriverName;
128+
if Result.IsEmpty and not AQuery.Connection.ConnectionDefName.IsEmpty then
129+
begin
130+
LDef := FDManager.ConnectionDefs.FindConnectionDef(AQuery.Connection.ConnectionDefName);
131+
if LDef = nil then
132+
raise Exception.Create('ConnectionDefs "' + AQuery.Connection.ConnectionDefName + '" not found');
133+
Result := LDef.Params.DriverID;
134+
end;
135+
end;
136+
{$ENDIF}
137+
138+
function TManagerCriteria.GetInstanceCriteria(const AQuery: {$IFDEF UNIDAC}TUniQuery{$ELSE}TFDQuery{$ENDIF}): ICriteria;
139+
begin
140+
case AnsiIndexStr(GetDrive(AQuery), ['PG']) of
141+
0:
142+
Result := TDefaultCriteria.Create(AQuery);
143+
else
144+
Result := TDefaultCriteria.Create(AQuery);
145+
end;
146+
end;
147+
148148
end.
149-
149+

0 commit comments

Comments
 (0)