From eab8c5f3af598a3286286194dc5a96d3809a5992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Van=20Canneyt?= Date: Sun, 26 Nov 2023 20:56:31 +0100 Subject: [PATCH] * Fcl-DB with namespaces --- packages/fcl-db/namespaced/Data.Consts.pas | 3 + packages/fcl-db/namespaced/Data.Db.pas | 3 + packages/fcl-db/namespaced/Data.ExtJS.pas | 3 + packages/fcl-db/namespaced/Data.FieldMap.pas | 3 + .../fcl-db/namespaced/Data.HTML.Actions.pas | 3 + .../fcl-db/namespaced/Data.JsonDataset.pas | 3 + .../fcl-db/namespaced/Data.LocalDataset.pas | 3 + .../namespaced/Data.Rest.Connection.pas | 3 + .../fcl-db/namespaced/Data.Rest.SqlDb.pas | 3 + .../namespaced/pas2js_fcldb_namespaced.lpk | 73 +++++++++++++++++++ .../namespaced/pas2js_fcldb_namespaced.pas | 16 ++++ packages/fcl-db/{ => src}/data.htmlactions.pp | 31 +++++++- packages/fcl-db/{ => src}/db.pas | 28 +++++-- packages/fcl-db/{ => src}/dbconst.pas | 3 +- packages/fcl-db/{ => src}/extjsdataset.pas | 6 ++ packages/fcl-db/{ => src}/fieldmap.pp | 26 ++++++- packages/fcl-db/{ => src}/jsondataset.pas | 17 ++++- .../fcl-db/{ => src}/localjsondataset.pas | 21 ++++++ packages/fcl-db/{ => src}/pas2js_fcldb.lpk | 18 ++++- packages/fcl-db/{ => src}/pas2js_fcldb.pas | 2 +- packages/fcl-db/{ => src}/restconnection.pas | 14 +++- packages/fcl-db/{ => src}/sqldbrestdataset.pp | 17 ++++- 22 files changed, 276 insertions(+), 23 deletions(-) create mode 100644 packages/fcl-db/namespaced/Data.Consts.pas create mode 100644 packages/fcl-db/namespaced/Data.Db.pas create mode 100644 packages/fcl-db/namespaced/Data.ExtJS.pas create mode 100644 packages/fcl-db/namespaced/Data.FieldMap.pas create mode 100644 packages/fcl-db/namespaced/Data.HTML.Actions.pas create mode 100644 packages/fcl-db/namespaced/Data.JsonDataset.pas create mode 100644 packages/fcl-db/namespaced/Data.LocalDataset.pas create mode 100644 packages/fcl-db/namespaced/Data.Rest.Connection.pas create mode 100644 packages/fcl-db/namespaced/Data.Rest.SqlDb.pas create mode 100644 packages/fcl-db/namespaced/pas2js_fcldb_namespaced.lpk create mode 100644 packages/fcl-db/namespaced/pas2js_fcldb_namespaced.pas rename packages/fcl-db/{ => src}/data.htmlactions.pp (94%) rename packages/fcl-db/{ => src}/db.pas (99%) rename packages/fcl-db/{ => src}/dbconst.pas (99%) rename packages/fcl-db/{ => src}/extjsdataset.pas (98%) rename packages/fcl-db/{ => src}/fieldmap.pp (86%) rename packages/fcl-db/{ => src}/jsondataset.pas (99%) rename packages/fcl-db/{ => src}/localjsondataset.pas (85%) rename packages/fcl-db/{ => src}/pas2js_fcldb.lpk (76%) rename packages/fcl-db/{ => src}/pas2js_fcldb.pas (71%) rename packages/fcl-db/{ => src}/restconnection.pas (97%) rename packages/fcl-db/{ => src}/sqldbrestdataset.pp (98%) diff --git a/packages/fcl-db/namespaced/Data.Consts.pas b/packages/fcl-db/namespaced/Data.Consts.pas new file mode 100644 index 0000000..d6b8e9d --- /dev/null +++ b/packages/fcl-db/namespaced/Data.Consts.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.Consts; +{$include ../src/dbconst.pas} diff --git a/packages/fcl-db/namespaced/Data.Db.pas b/packages/fcl-db/namespaced/Data.Db.pas new file mode 100644 index 0000000..c566248 --- /dev/null +++ b/packages/fcl-db/namespaced/Data.Db.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.Db; +{$include ../src/db.pas} diff --git a/packages/fcl-db/namespaced/Data.ExtJS.pas b/packages/fcl-db/namespaced/Data.ExtJS.pas new file mode 100644 index 0000000..fc64a0b --- /dev/null +++ b/packages/fcl-db/namespaced/Data.ExtJS.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.ExtJS; +{$include ../src/extjsdataset.pas} diff --git a/packages/fcl-db/namespaced/Data.FieldMap.pas b/packages/fcl-db/namespaced/Data.FieldMap.pas new file mode 100644 index 0000000..268d21f --- /dev/null +++ b/packages/fcl-db/namespaced/Data.FieldMap.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.FieldMap; +{$include ../src/fieldmap.pp} diff --git a/packages/fcl-db/namespaced/Data.HTML.Actions.pas b/packages/fcl-db/namespaced/Data.HTML.Actions.pas new file mode 100644 index 0000000..50c679a --- /dev/null +++ b/packages/fcl-db/namespaced/Data.HTML.Actions.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.HTML.Actions; +{$include ../src/data.htmlactions.pp} diff --git a/packages/fcl-db/namespaced/Data.JsonDataset.pas b/packages/fcl-db/namespaced/Data.JsonDataset.pas new file mode 100644 index 0000000..3aee28d --- /dev/null +++ b/packages/fcl-db/namespaced/Data.JsonDataset.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.JsonDataset; +{$include ../src/jsondataset.pas} diff --git a/packages/fcl-db/namespaced/Data.LocalDataset.pas b/packages/fcl-db/namespaced/Data.LocalDataset.pas new file mode 100644 index 0000000..93001d3 --- /dev/null +++ b/packages/fcl-db/namespaced/Data.LocalDataset.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.LocalDataset; +{$include ../src/localjsondataset.pas} diff --git a/packages/fcl-db/namespaced/Data.Rest.Connection.pas b/packages/fcl-db/namespaced/Data.Rest.Connection.pas new file mode 100644 index 0000000..7002771 --- /dev/null +++ b/packages/fcl-db/namespaced/Data.Rest.Connection.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.Rest.Connection; +{$include ../src/restconnection.pas} diff --git a/packages/fcl-db/namespaced/Data.Rest.SqlDb.pas b/packages/fcl-db/namespaced/Data.Rest.SqlDb.pas new file mode 100644 index 0000000..84c8d68 --- /dev/null +++ b/packages/fcl-db/namespaced/Data.Rest.SqlDb.pas @@ -0,0 +1,3 @@ +{$DEFINE FPC_DOTTEDUNITS} +unit Data.Rest.SqlDb; +{$include ../src/sqldbrestdataset.pp} diff --git a/packages/fcl-db/namespaced/pas2js_fcldb_namespaced.lpk b/packages/fcl-db/namespaced/pas2js_fcldb_namespaced.lpk new file mode 100644 index 0000000..757c3bd --- /dev/null +++ b/packages/fcl-db/namespaced/pas2js_fcldb_namespaced.lpk @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/fcl-db/namespaced/pas2js_fcldb_namespaced.pas b/packages/fcl-db/namespaced/pas2js_fcldb_namespaced.pas new file mode 100644 index 0000000..2aa48cd --- /dev/null +++ b/packages/fcl-db/namespaced/pas2js_fcldb_namespaced.pas @@ -0,0 +1,16 @@ +{ This file was automatically created by Lazarus. Do not edit! + This source is only used to compile and install the package. + } + +unit pas2js_fcldb_namespaced; + +{$warn 5023 off : no warning about unused units} +interface + +uses + Data.Db, Data.Consts, Data.JsonDataset, Data.Rest.Connection, Data.ExtJS, Data.FieldMap, Data.HTML.Actions, Data.LocalDataset, + Data.Rest.SqlDb; + +implementation + +end. diff --git a/packages/fcl-db/data.htmlactions.pp b/packages/fcl-db/src/data.htmlactions.pp similarity index 94% rename from packages/fcl-db/data.htmlactions.pp rename to packages/fcl-db/src/data.htmlactions.pp index 2aca41e..b52c8a7 100644 --- a/packages/fcl-db/data.htmlactions.pp +++ b/packages/fcl-db/src/data.htmlactions.pp @@ -1,8 +1,30 @@ +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2019 by Michael Van Canneyt, member of the + Free Pascal development team + + Data-Aware HTML actions (ActionLists). + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +{$IFNDEF FPC_DOTTEDUNITS} unit Data.HTMLActions; +{$ENDIF} interface -uses sysutils, classes, web, Rtl.HTMLEventNames, Rtl.HTMLActions, db; +uses +{$IFDEF FPC_DOTTEDUNITS} + System.SysUtils, System.Classes, BrowserApi.Web, HTML.EventNames, HTML.Actions, Data.Db; +{$ELSE} + sysutils, classes, web, Rtl.HTMLEventNames, Rtl.HTMLActions, db; +{$ENDIF} Type TDBCustomHTMLElementAction = class; @@ -202,7 +224,12 @@ Type Implementation -uses strutils, rtl.HTMLUtils; +uses +{$IFDEF FPC_DOTTEDUNITS} + System.StrUtils, HTML.Utils; +{$ELSE} + strutils, rtl.HTMLUtils; +{$ENDIF} { TButtonActionDataLink } diff --git a/packages/fcl-db/db.pas b/packages/fcl-db/src/db.pas similarity index 99% rename from packages/fcl-db/db.pas rename to packages/fcl-db/src/db.pas index 1fe952e..7f330a1 100644 --- a/packages/fcl-db/db.pas +++ b/packages/fcl-db/src/db.pas @@ -13,14 +13,21 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} +{$IFNDEF FPC_DOTTEDUNITS} unit DB; +{$ENDIF} {$mode objfpc} { $define dsdebug} interface -uses Classes, SysUtils, JS, Types, DateUtils; +uses +{$IFDEF FPC_DOTTEDUNITS} + System.Classes, System.SysUtils, JSApi.JS, System.Types, System.DateUtils; +{$ELSE} + Classes, SysUtils, JS, Types, DateUtils; +{$ENDIF} const dsMaxBufferCount = MAXINT div 8; @@ -1791,7 +1798,12 @@ Function ExtractFieldName(Const Fields: String; var Pos: Integer): String; implementation -uses DBConst,TypInfo; +uses +{$IFDEF FPC_DOTTEDUNITS} + Data.Consts, System.TypInfo; +{$ELSE} + DBConst,TypInfo; +{$ENDIF} { --------------------------------------------------------------------- Auxiliary functions @@ -5806,7 +5818,7 @@ end; function TField.GetIsNull: Boolean; begin - Result:=js.IsNull(GetData); + Result:={$IFDEF FPC_DOTTEDUNITS}JSApi.{$ENDIF}JS.IsNull(GetData); end; function TField.GetParentComponent: TComponent; @@ -5911,7 +5923,7 @@ end; procedure TField.SetAsJSValue(const AValue: JSValue); begin - if js.IsNull(AValue) then + if {$IFDEF FPC_DOTTEDUNITS}JSApi.{$ENDIF}JS.IsNull(AValue) then Clear else try @@ -6960,7 +6972,7 @@ end; function TDateTimeField.ConvertToDateTime(aValue: JSValue; aRaiseError: Boolean): TDateTime; begin - if JS.isNull(aValue) then + if {$IFDEF FPC_DOTTEDUNITS}JSApi.{$ENDIF}JS.isNull(aValue) then Result:=0 else if Assigned(Dataset) then Result:=Dataset.ConvertToDateTime(Self,aValue,aRaiseError) @@ -8937,7 +8949,7 @@ end; Function TParam.GetIsNull: Boolean; begin - Result:= JS.IsNull(FValue); + Result:= {$IFDEF FPC_DOTTEDUNITS}JSApi.{$ENDIF}JS.IsNull(FValue); end; Function TParam.IsEqual(AValue: TParam): Boolean; @@ -9022,7 +9034,7 @@ Procedure TParam.SetAsJSValue(const AValue: JSValue); begin FValue:=AValue; - FBound:=not JS.IsNull(AValue); + FBound:=not {$IFDEF FPC_DOTTEDUNITS}JSApi.{$ENDIF}JS.IsNull(AValue); if FBound then case GetValueType(aValue) of jvtBoolean : FDataType:=ftBoolean; @@ -9142,7 +9154,7 @@ begin FDataType := ftString else FDataType := Field.DataType; - if JS.IsNull(AValue) then + if {$IFDEF FPC_DOTTEDUNITS}JSApi.{$ENDIF}JS.IsNull(AValue) then Clear else Value:=AValue; diff --git a/packages/fcl-db/dbconst.pas b/packages/fcl-db/src/dbconst.pas similarity index 99% rename from packages/fcl-db/dbconst.pas rename to packages/fcl-db/src/dbconst.pas index 3e8f02d..d037910 100644 --- a/packages/fcl-db/dbconst.pas +++ b/packages/fcl-db/src/dbconst.pas @@ -13,8 +13,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} - +{$IFNDEF FPC_DOTTEDUNITS} unit DBConst; +{$ENDIF} Interface diff --git a/packages/fcl-db/extjsdataset.pas b/packages/fcl-db/src/extjsdataset.pas similarity index 98% rename from packages/fcl-db/extjsdataset.pas rename to packages/fcl-db/src/extjsdataset.pas index 4df220a..9ca8517 100644 --- a/packages/fcl-db/extjsdataset.pas +++ b/packages/fcl-db/src/extjsdataset.pas @@ -13,14 +13,20 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} +{$IFNDEF FPC_DOTTEDUNITS} unit ExtJSDataset; +{$ENDIF} {$mode objfpc} interface uses +{$IFDEF FPC_DOTTEDUNITS} + System.Classes, System.SysUtils, Data.Db, JSApi.JS, Data.JsonDataset; +{$ELSE} Classes, SysUtils, db, JS, jsondataset; +{$ENDIF} type { TExtJSJSONDataSet } diff --git a/packages/fcl-db/fieldmap.pp b/packages/fcl-db/src/fieldmap.pp similarity index 86% rename from packages/fcl-db/fieldmap.pp rename to packages/fcl-db/src/fieldmap.pp index 9f2c077..2e8c7f0 100644 --- a/packages/fcl-db/fieldmap.pp +++ b/packages/fcl-db/src/fieldmap.pp @@ -1,9 +1,33 @@ +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2019 by Michael Van Canneyt, member of the + Free Pascal development team + + Fieldmap class for direct field access. + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +{$IFNDEF FPC_DOTTEDUNITS} unit fieldmap; +{$ENDIF} + {$mode objfpc} {$H+} + interface -uses SysUtils, db; +uses +{$IFDEF FPC_DOTTEDUNITS} + System.SysUtils, Data.Db; +{$ELSE} + SysUtils, db; +{$ENDIF} { --------------------------------------------------------------------- TFieldMap diff --git a/packages/fcl-db/jsondataset.pas b/packages/fcl-db/src/jsondataset.pas similarity index 99% rename from packages/fcl-db/jsondataset.pas rename to packages/fcl-db/src/jsondataset.pas index f4f2e51..ff37d0b 100644 --- a/packages/fcl-db/jsondataset.pas +++ b/packages/fcl-db/src/jsondataset.pas @@ -13,14 +13,20 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} -{$mode objfpc} - +{$IFNDEF FPC_DOTTEDUNITS} unit JSONDataset; +{$ENDIF} + +{$mode objfpc} interface uses +{$IFDEF FPC_DOTTEDUNITS} + System.Types, JSApi.JS, Data.DB, System.Classes, System.SysUtils, System.Typinfo, Fcl.Expressions; +{$ELSE} Types, JS, DB, Classes, SysUtils, typinfo, fpexprpars; +{$ENDIF} type TBaseJSONDataset = Class; @@ -469,7 +475,12 @@ type implementation -uses DateUtils; +uses +{$IFDEF FPC_DOTTEDUNITS} + System.DateUtils; +{$ELSE} + DateUtils; +{$ENDIF} Function atob (s : String) : string; external name 'atob'; Function btoa (s : String) : string; external name 'btoa'; diff --git a/packages/fcl-db/localjsondataset.pas b/packages/fcl-db/src/localjsondataset.pas similarity index 85% rename from packages/fcl-db/localjsondataset.pas rename to packages/fcl-db/src/localjsondataset.pas index b497d3a..979b448 100644 --- a/packages/fcl-db/localjsondataset.pas +++ b/packages/fcl-db/src/localjsondataset.pas @@ -1,11 +1,32 @@ +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2019 by Michael Van Canneyt, member of the + Free Pascal development team + + Simple Local JSON dataset component. + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} +{$IFNDEF FPC_DOTTEDUNITS} unit localjsondataset; +{$ENDIF} {$mode ObjFPC} interface uses +{$IFDEF FPC_DOTTEDUNITS} + System.Classes, System.SysUtils, Data.Db, Data.JsonDataset, JSApi.JS, BrowserApi.web; +{$ELSE} Classes, SysUtils, db, jsondataset, js, web; +{$ENDIF} Type { TCustomLocalJSONDataset } diff --git a/packages/fcl-db/pas2js_fcldb.lpk b/packages/fcl-db/src/pas2js_fcldb.lpk similarity index 76% rename from packages/fcl-db/pas2js_fcldb.lpk rename to packages/fcl-db/src/pas2js_fcldb.lpk index a4b16ec..6396cc1 100644 --- a/packages/fcl-db/pas2js_fcldb.lpk +++ b/packages/fcl-db/src/pas2js_fcldb.lpk @@ -1,6 +1,6 @@ - + @@ -17,7 +17,7 @@ - + @@ -38,7 +38,21 @@ + + + + + + + + + + + + + + diff --git a/packages/fcl-db/pas2js_fcldb.pas b/packages/fcl-db/src/pas2js_fcldb.pas similarity index 71% rename from packages/fcl-db/pas2js_fcldb.pas rename to packages/fcl-db/src/pas2js_fcldb.pas index 041b09c..83ec05c 100644 --- a/packages/fcl-db/pas2js_fcldb.pas +++ b/packages/fcl-db/src/pas2js_fcldb.pas @@ -8,7 +8,7 @@ unit pas2js_fcldb; interface uses - DB, DBConst, JSONDataset, RestConnection, extjsdataset; + DB, DBConst, JSONDataset, RestConnection, ExtJSDataset, data.htmlactions, sqldbrestdataset; implementation diff --git a/packages/fcl-db/restconnection.pas b/packages/fcl-db/src/restconnection.pas similarity index 97% rename from packages/fcl-db/restconnection.pas rename to packages/fcl-db/src/restconnection.pas index 1a9eee9..2cc0d50 100644 --- a/packages/fcl-db/restconnection.pas +++ b/packages/fcl-db/src/restconnection.pas @@ -13,15 +13,20 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} - +{$IFNDEF FPC_DOTTEDUNITS} unit RestConnection; +{$ENDIF} {$mode objfpc} interface uses +{$IFDEF FPC_DOTTEDUNITS} + System.Classes, System.SysUtils, BrowserApi.Web, Data.Db; +{$ELSE} Classes, SysUtils, Web, DB; +{$ENDIF} Type @@ -95,7 +100,12 @@ Type implementation -uses js; +uses +{$IFDEF FPC_DOTTEDUNITS} + JSApi.JS; +{$ELSE} + js; +{$ENDIF} { TRESTUpdateRequest } diff --git a/packages/fcl-db/sqldbrestdataset.pp b/packages/fcl-db/src/sqldbrestdataset.pp similarity index 98% rename from packages/fcl-db/sqldbrestdataset.pp rename to packages/fcl-db/src/sqldbrestdataset.pp index 4bde0c6..68fed44 100644 --- a/packages/fcl-db/sqldbrestdataset.pp +++ b/packages/fcl-db/src/sqldbrestdataset.pp @@ -13,14 +13,20 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} +{$IFNDEF FPC_DOTTEDUNITS} unit sqldbrestdataset; +{$ENDIF} {$mode objfpc} interface uses +{$IFDEF FPC_DOTTEDUNITS} + System.Classes, System.SysUtils, JSApi.JS, BrowserApi.Web, Data.Db, Data.JsonDataset, Data.Rest.Connection; +{$ELSE} Classes, SysUtils, JS, web, db, JSONDataset, restconnection; +{$ENDIF} Type @@ -167,7 +173,12 @@ Type implementation -uses Types, StrUtils, DateUtils; +uses +{$IFDEF FPC_DOTTEDUNITS} + System.Types, System.StrUtils, System.DateUtils; +{$ELSE} + Types, StrUtils, DateUtils; +{$ENDIF} Type @@ -464,8 +475,8 @@ begin For I:=0 to Params.Count-1 do AddToResult(Params[I].AsQuery); Sort:=''; - DFN:=StrUtils.SplitString(ServerSortDescFields,','); - For S in StrUtils.SplitString(ServerSortFields,',') do + DFN:=SplitString(ServerSortDescFields,','); + For S in SplitString(ServerSortFields,',') do begin FN:=Trim(S); if (FN<>'') then