Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CORE/Source/Basic/Mechanics/uRESTDWBuffer.pas
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ implementation
If AByteCount > 0 Then
Begin
ExtractToBytes(LBytes, AByteCount);
Result := BytesToString(LBytes);
Result := BytesToStringInternal(LBytes);
End
Else
Result := '';
Expand Down Expand Up @@ -484,7 +484,7 @@ implementation

Function TRESTDWBuffer.GetAsString: string;
Begin
Result := BytesToString(FBytes);
Result := BytesToStringInternal(FBytes);
End;

End.
Expand Down
1 change: 1 addition & 0 deletions CORE/Source/Basic/uRESTDWBasic.pas
Original file line number Diff line number Diff line change
Expand Up @@ -7804,3 +7804,4 @@ destructor TRESTDWServerIpVersionConfig.Destroy;
end;

end.

67 changes: 36 additions & 31 deletions CORE/Source/Basic/uRESTDWBasicDB.pas

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions CORE/Source/Basic/uRESTDWParams.pas
Original file line number Diff line number Diff line change
Expand Up @@ -5738,14 +5738,16 @@ procedure TRESTDWJSONParam.SetParamContentType(const bValue: String);

Function TRESTDWParams.GetRecName(Index : String) : TRESTDWJSONParam;
Var
I : Integer;
I : Integer;
vParamName : String;
Begin
Result := Nil;
If Assigned(Self) And (Lowercase(Index) <> '') Then
Begin
For i := 0 To Self.Count - 1 Do
Begin
If (Uppercase(Index) = Uppercase(TRESTDWJSONParam(TList(Self).Items[i]^).vParamName)) Or
vParamName := Uppercase(TRESTDWJSONParam(TList(Self).Items[i]^).vParamName);
If (Uppercase(Index) = vParamName) Or
(Lowercase(Index) = Lowercase(TRESTDWJSONParam(TList(Self).Items[i]^).vAlias)) Then
Begin
Result := TRESTDWJSONParam(TList(Self).Items[i]^);
Expand Down
2 changes: 2 additions & 0 deletions CORE/Source/Basic/uRESTDWServerEvents.pas
Original file line number Diff line number Diff line change
Expand Up @@ -1110,3 +1110,5 @@ procedure TRESTDWClientEvents.SeTRESTClientPoolerBase(const Value: TRESTClientPo
RegisterClass(TRESTDWClientEvents);
end.



80 changes: 50 additions & 30 deletions CORE/Source/Basic/uRESTDWStorageBin.pas
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ interface
FFieldTypes,
FFieldAttrs : Array of Byte;
FFieldExists : Array of Boolean;
Public
Procedure SaveRecordToStream (ADataset : TDataset;
Var AStream : TStream);
Procedure LoadRecordFromStream (ADataset : TDataset;
Expand Down Expand Up @@ -168,12 +167,17 @@ interface
// field precision
AStream.Read(vInt, SizeOf(vInt));
FFieldPrecision[I] := vInt;
If (FFieldTypes[I] In [dwftFloat, dwftCurrency, dwftExtended, dwftSingle]) Then
If (FFieldTypes[I] In [dwftFloat, dwftCurrency, dwftExtended]) Then
vFieldDef.Precision := FFieldPrecision[I]
Else If (vFieldType In [dwftBCD, dwftFMTBcd]) Then
Begin
{$IFDEF FPC}
vFieldDef.Size := 0;
vFieldDef.Precision := FFieldPrecision[I];
{$ELSE}
vFieldDef.Size := 0;
vFieldDef.Precision := 0;
{$ENDIF}
End;
// field required + provider flag
AStream.Read(vByte, SizeOf(Byte));
Expand Down Expand Up @@ -255,9 +259,22 @@ interface
dwftSingle : VFDef.Precision := FFieldPrecision[Index];
dwftBCD,
dwftFMTBcd : Begin
{$IFNDEF FPC}
VFDef.Size := 0;
VFDef.Precision := 0;
{$ELSE}
VFDef.Precision := FFieldPrecision[Index];
{$ENDIF}
End;
{
dwftWideString : Begin
If VFDef.Size > 7100 Then
Begin
VFDef.Size := 7100;
FFieldSize[Index] := VFDef.Size;
End;
End;
}
End;
End;
End;
Expand Down Expand Up @@ -317,11 +334,24 @@ interface
// field precision
AStream.Read(vFieldPrecision, SizeOf(vFieldPrecision));
{$IFDEF FPC}
If vFieldType = dwftSingle Then
If vFieldPrecision < 8 Then
FFieldPrecision[I] := 8;
If vFieldType in [dwftSingle, dwftFloat, dwftFMTBcd, dwftBCD] Then
If vFieldType in [dwftFloat, dwftFMTBcd, dwftBCD] Then
Begin
If (vFieldPrecision < 12) Or
(FFieldPrecision[I] = 0) Then
FFieldPrecision[I] := 12;
End
Else
Begin
If (vFieldPrecision < 8) Or
(FFieldPrecision[I] = 0) Then
FFieldPrecision[I] := 8;
End;
{$ELSE}
FFieldPrecision[I] := vFieldPrecision;
If vFieldType in [dwftSingle] Then
If vFieldPrecision < 12 Then
FFieldPrecision[I] := 12;
{$ENDIF}
// required + provider flags
AStream.Read(vFieldProviderFlags, SizeOf(Byte));
Expand Down Expand Up @@ -625,16 +655,16 @@ interface
End;
// 4 - Bytes - Flutuantes
dwftSingle :Begin // Gledston
vLength := SizeOf(vSingle);
stream.Read(vSingle, vLength);
vLength := SizeOf(vDouble);
stream.Read(vDouble, vLength);
If aField <> Nil Then
Begin
//Move(vSingle,PData^,Sizeof(vSingle));
SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vSingle));
SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vDouble));
//Move Null para Bytes
Move(vBoolean, vVarBytes[0], Sizeof(Boolean));
//Move Bytes do Dado para Bytes
Move(vSingle, vVarBytes[1], Sizeof(vSingle));
Move(vDouble, vVarBytes[1], Sizeof(vDouble));
//Move Bytes para Buffer
Move(vVarBytes[0], PData^, Length(vVarBytes));
End;
Expand Down Expand Up @@ -694,18 +724,6 @@ interface
stream.Read(vDouble, SizeOf(vDouble));
If aField <> Nil Then
Begin
// Case vDataType Of
// ftDate : vDateTimeRec.Date := DateTimeToTimeStamp(vDouble).Date;
// ftTime : vDateTimeRec.Time := DateTimeToTimeStamp(vDouble).Time;
// Else vDateTimeRec.DateTime := TimeStampToMSecs(DateTimeToTimeStamp(vDouble));
// End;
// SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vDateTimeRec));
// //Move Null para Bytes
// Move(vBoolean, vVarBytes[0], Sizeof(Boolean));
// //Move Bytes do Dado para Bytes
// Move(vDateTimeRec, vVarBytes[1], SizeOf(vDateTimeRec));
// //Move Bytes para Buffer
// Move(vVarBytes[0], PData^, Length(vVarBytes));
SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vDouble));
//Move Null para Bytes
Move(vBoolean, vVarBytes[0], Sizeof(Boolean));
Expand Down Expand Up @@ -780,7 +798,7 @@ interface
If aField <> Nil Then
Begin
{$IFDEF FPC}
SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vInt));
SetLength(vVarBytes, Sizeof(Boolean) + Sizeof(vCurrency));
//Move Null para Bytes
Move(vBoolean, vVarBytes[0], Sizeof(Boolean));
//Move Bytes do Dado para Bytes
Expand Down Expand Up @@ -1155,6 +1173,7 @@ interface
Case vByte Of
dwftFixedWideChar,
dwftWideString : vByte := FieldTypeToDWFieldType(ftString);
dwftSingle : vByte := FieldTypeToDWFieldType(ftFloat);
End;
AStream.Write(vByte, SizeOf(vByte));
// field size
Expand Down Expand Up @@ -1255,7 +1274,12 @@ interface
AStream.Write(vString[InitStrPos], vByte);
// datatype
vByte := FieldTypeToDWFieldType(ADataset.Fields[i].DataType);
AStream.Write(vByte, SizeOf(vByte));
Case vByte Of
dwftFixedWideChar,
dwftWideString : vByte := FieldTypeToDWFieldType(ftString);
dwftSingle : vByte := FieldTypeToDWFieldType(ftFloat);
End;
AStream.Write(vByte, SizeOf(vByte));
// fieldsize
vInt := ADataset.Fields[i].Size;
AStream.Write(vInt, SizeOf(vInt));
Expand Down Expand Up @@ -1434,8 +1458,8 @@ interface
End;
// 4 - Bytes - Flutuantes
dwftSingle : Begin
Move(PData^, vSingle, Sizeof(vSingle));
Stream.Write(vSingle, Sizeof(vSingle));
Move(PData^, vDouble, Sizeof(vDouble));
Stream.Write(vDouble, Sizeof(vDouble));
End;
// 8 - Bytes - Inteiros
dwftLargeint,
Expand Down Expand Up @@ -1651,11 +1675,7 @@ interface
End;
// 4 - Bytes - Flutuantes
dwftSingle : Begin
{$IFDEF DELPHIXEUP}
vSingle := ADataset.Fields[i].AsSingle;
{$ELSE}
vSingle := ADataset.Fields[i].AsFloat;
{$ENDIF}
vSingle := ADataset.Fields[i].Value;
AStream.Write(vSingle, SizeOf(vSingle));
End;
// 8 - Bytes - Inteiros
Expand Down
5 changes: 3 additions & 2 deletions CORE/Source/Consts/uRESTDWConsts.pas
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@

// controle de versão
RESTDWVersionINFO = 'v2.1.0-';
RESTDWRelease = '3933';
RESTDWCodeProject = 'Galaga - Github';
RESTDWRelease = '3857';
RESTDWCodeProject = 'Galaga - SourceForge';
RESTDWVersao = RESTDWVersionINFO + RESTDWRelease + '(' + RESTDWCodeProject + ')';
RESTDWDialogoTitulo = 'REST DataWare Components ' + RESTDWVersao;
RESTDWSobreTitulo = 'REST DataWare '+ RESTDWVersao;
Expand Down Expand Up @@ -206,6 +206,7 @@
TDecimalChar = 'D';
TFormdataParamName = 'content-disposition: form-data; name';
TJsonDatasetHeader = '{"Field":"%s", "Type":"%s", "Primary":"%s", "Required":"%s", "Size":%d, "Precision":%d, "ReadOnly":"%s", "Autogeneration":"%s"}';
TJsonNumValue = '"%d"';
TJsonStringValue = '"%s"';
TJsonValueFormat = '%s';
TMassiveFormatJSON = '{"%s":"%s", "%s":"%s", "%s":"%s", "%s":"%s", "%s":"%s", "%s":[%s], ' +
Expand Down
86 changes: 42 additions & 44 deletions CORE/Source/Database_Drivers/uRESTDWDriverBase.pas
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,8 @@
Fernando Banhos - Refactor Drivers REST Dataware.
}

{$IFNDEF RESTDWLAZARUS}
{$IFDEF FPC}
{$MODE OBJFPC}{$H+}
{$ENDIF}
{$IFDEF FPC}
{$MODE OBJFPC}{$H+}
{$ENDIF}

Interface
Expand Down Expand Up @@ -188,11 +186,11 @@ TRDWDrvParam = class(TObject)
Property TableName : String Read getTableName Write setTableName;
End;

TRESTDWDrvQuery = Class(TRESTDWDrvDataset)
TRESTDWDrvQuery = Class(TRESTDWDrvDataset)
Private
Function getSQL : TStrings; Virtual;
Public
Function GetInsertID : int64; Virtual;
Function GetInsertID : Int64; Virtual;
Published
Property SQL : TStrings Read getSQL;
End;
Expand Down Expand Up @@ -262,45 +260,45 @@ TRDWDrvParam = class(TObject)
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;

Function compConnIsValid(comp : TComponent) : boolean; virtual;
Function getConectionType : TRESTDWDatabaseType; Virtual;
Function compConnIsValid (comp : TComponent) : Boolean;Virtual;
Function getConectionType : TRESTDWDatabaseType; Virtual;
Procedure setConectionType(aValue : TRESTDWDatabaseType); Virtual;
Function getDatabaseInfo : TRESTDWDatabaseInfo; Virtual;
Function getQuery : TRESTDWDrvQuery; Overload; Virtual;
Function getQuery(AUnidir : boolean) : TRESTDWDrvQuery; Overload; Virtual;
Function getTable : TRESTDWDrvTable; Virtual;
Function getStoreProc : TRESTDWDrvStoreProc; Virtual;
Procedure Connect; Virtual;
Procedure Disconect; Virtual;
Function ConnectionSet : Boolean; Virtual;
Function GetGenID (Query : TRESTDWDrvQuery;
GenName : String;
valor : Integer = 1): Integer;Overload;Virtual;
Function GetGenID (GenName : String;
valor : Integer = 1): Integer;Overload;Virtual;
Function ApplyUpdates (MassiveStream : TStream;
SQL : String;
Params : TRESTDWParams;
Var Error : Boolean;
Var MessageError : String;
Var RowsAffected : Integer) : TRESTDWJSONValue;Overload;Virtual;
Function ApplyUpdates (Massive,
SQL : String;
Params : TRESTDWParams;
Var Error : Boolean;
Var MessageError : String;
Var RowsAffected : Integer) : TRESTDWJSONValue;Overload;Virtual;
Function ApplyUpdatesTB (MassiveStream : TStream;
SQL : String;
Params : TRESTDWParams;
Var Error : Boolean;
Var MessageError : String;
Var RowsAffected : Integer) : TRESTDWJSONValue;Overload;Virtual;
Function ApplyUpdatesTB (Massive : String;
Params : TRESTDWParams;
Var Error : Boolean;
Var MessageError : String;
Var RowsAffected : Integer) : TRESTDWJSONValue;Overload;Virtual;
Function getDatabaseInfo : TRESTDWDatabaseInfo; Virtual;
Function getQuery : TRESTDWDrvQuery; Overload; Virtual;
Function getQuery (AUnidir : Boolean) : TRESTDWDrvQuery; Overload; Virtual;
Function getTable : TRESTDWDrvTable; Virtual;
Function getStoreProc : TRESTDWDrvStoreProc; Virtual;
Procedure Connect; Virtual;
Procedure Disconect; Virtual;
Function ConnectionSet : Boolean; Virtual;
Function GetGenID (Query : TRESTDWDrvQuery;
GenName : String;
valor : Integer = 1): Integer;Overload;Virtual;
Function GetGenID (GenName : String;
valor : Integer = 1): Integer;Overload;Virtual;
Function ApplyUpdates (MassiveStream : TStream;
SQL : String;
Params : TRESTDWParams;
Var Error : Boolean;
Var MessageError : String;
Var RowsAffected : Integer) : TRESTDWJSONValue;Overload;Virtual;
Function ApplyUpdates (Massive,
SQL : String;
Params : TRESTDWParams;
Var Error : Boolean;
Var MessageError : String;
Var RowsAffected : Integer) : TRESTDWJSONValue;Overload;Virtual;
Function ApplyUpdatesTB (MassiveStream : TStream;
SQL : String;
Params : TRESTDWParams;
Var Error : Boolean;
Var MessageError : String;
Var RowsAffected : Integer) : TRESTDWJSONValue;Overload;Virtual;
Function ApplyUpdatesTB (Massive : String;
Params : TRESTDWParams;
Var Error : Boolean;
Var MessageError : String;
Var RowsAffected : Integer) : TRESTDWJSONValue;Overload;Virtual;
Function ApplyUpdates_MassiveCache (MassiveStream : TStream;
Var Error : Boolean;
Var MessageError : String) : TRESTDWJSONValue;Overload;Virtual;
Expand Down
Loading