Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | {1214} added overloaded TSQLModel.Create method, raising an explict EModelException to ensure the proper Create() constructors are used |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
da792ff2f34ba01eff0f2c88ef17702c |
User & Date: | ab 2015-04-12 10:20:45 |
2015-04-12
| ||
10:35 | {1215} fixed GPF issue when WITHLOG conditional is undefined - see [ca41b5d79a29] check-in: b3451bc24e user: ab tags: trunk | |
10:20 | {1214} added overloaded TSQLModel.Create method, raising an explict EModelException to ensure the proper Create() constructors are used check-in: da792ff2f3 user: ab tags: trunk | |
07:01 | {1213} added TSQLRestServer.OnSessionReject callback, triggerred when authentication failed, in addition to OnSessionCreate/OnSessionClosed check-in: 1cc4677e59 user: ab tags: trunk | |
Changes to SQLite3/mORMot.pas.
7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 ..... 27126 27127 27128 27129 27130 27131 27132 27133 27134 27135 27136 27137 27138 27139 ..... 27163 27164 27165 27166 27167 27168 27169 27170 27171 27172 27173 27174 27175 27176 |
public /// initialize the Database Model // - set the Tables to be associated with this Model, as TSQLRecord classes // - set the optional Root URI path of this Model // - initialize the fIsUnique[] array from "stored AS_UNIQUE" (i.e. "stored // false") published properties of every TSQLRecordClass constructor Create(const Tables: array of TSQLRecordClass; const aRoot: RawUTF8='root'); reintroduce; overload; /// clone an existing Database Model // - all supplied classes won't be redefined as non-virtual: // VirtualTableExternalRegister explicit calls are not mandatory here constructor Create(CloneFrom: TSQLModel); overload; /// initialize the Database Model from an User Interface parameter structure // - this constructor will reset all supplied classes to be defined as // non-virtual (i.e. Kind=rSQLite3): VirtualTableExternalRegister explicit // calls are to be made if tables should be managed as external constructor Create(Owner: TSQLRest; TabParameters: PSQLRibbonTabParameters; TabParametersCount, TabParametersSize: integer; const NonVisibleTables: array of TSQLRecordClass; Actions: PTypeInfo=nil; Events: PTypeInfo=nil; const aRoot: RawUTF8='root'); overload; /// release associated memory destructor Destroy; override; /// add the class if it doesn't exist yet // - return index in Tables[] if not existing yet and successfully added (in this case, // aTableIndexCreated^ is set to the newly created index in Tables[]) // - supplied class will be redefined as non-virtual: VirtualTableExternalRegister // explicit call is to be made if table should be managed as external ................................................................................ constructor TSQLModel.Create(CloneFrom: TSQLModel); var i: integer; begin if CloneFrom=nil then raise EModelException.CreateUTF8('%.Create(CloneFrom=nil)',[self]); fTables := CloneFrom.fTables; fTablesMax := CloneFrom.fTablesMax; fRoot := CloneFrom.fRoot; fActions := CloneFrom.fActions; fEvents := CloneFrom.fEvents; fRestOwner := CloneFrom.fRestOwner; fSortedTablesName := CloneFrom.fSortedTablesName; fSortedTablesNameIndex := CloneFrom.fSortedTablesNameIndex; fRecordReferences := CloneFrom.fRecordReferences; ................................................................................ for i := 0 to high(NonVisibleTables) do Tables[i+TabParametersCount] := NonVisibleTables[i]; Create(Tables,aRoot); fRestOwner := Owner; SetActions(Actions); SetEvents(Events); end; constructor TSQLModel.Create(const Tables: array of TSQLRecordClass; const aRoot: RawUTF8); var N, i: integer; begin N := length(Tables); if N>sizeof(SUPERVISOR_ACCESS_RIGHTS.Get)*8 then // TSQLAccessRights bits size raise EModelException.CreateUTF8('% for "%" has too many Tables: %>%', |
> > > | | > > > > > > > |
7743 7744 7745 7746 7747 7748 7749 7750 7751 7752 7753 7754 7755 7756 7757 7758 7759 7760 7761 7762 7763 7764 7765 7766 7767 7768 7769 7770 7771 7772 ..... 27129 27130 27131 27132 27133 27134 27135 27136 27137 27138 27139 27140 27141 27142 27143 27144 ..... 27168 27169 27170 27171 27172 27173 27174 27175 27176 27177 27178 27179 27180 27181 27182 27183 27184 27185 27186 |
public /// initialize the Database Model // - set the Tables to be associated with this Model, as TSQLRecord classes // - set the optional Root URI path of this Model // - initialize the fIsUnique[] array from "stored AS_UNIQUE" (i.e. "stored // false") published properties of every TSQLRecordClass constructor Create(const Tables: array of TSQLRecordClass; const aRoot: RawUTF8='root'); reintroduce; overload; /// you should not use this constructor, but one of the overloaded versions, // specifying the associated TSQLRecordClass constructor Create; reintroduce; overload; /// clone an existing Database Model // - all supplied classes won't be redefined as non-virtual: // VirtualTableExternalRegister explicit calls are not mandatory here constructor Create(CloneFrom: TSQLModel); reintroduce; overload; /// initialize the Database Model from an User Interface parameter structure // - this constructor will reset all supplied classes to be defined as // non-virtual (i.e. Kind=rSQLite3): VirtualTableExternalRegister explicit // calls are to be made if tables should be managed as external constructor Create(Owner: TSQLRest; TabParameters: PSQLRibbonTabParameters; TabParametersCount, TabParametersSize: integer; const NonVisibleTables: array of TSQLRecordClass; Actions: PTypeInfo=nil; Events: PTypeInfo=nil; const aRoot: RawUTF8='root'); reintroduce; overload; /// release associated memory destructor Destroy; override; /// add the class if it doesn't exist yet // - return index in Tables[] if not existing yet and successfully added (in this case, // aTableIndexCreated^ is set to the newly created index in Tables[]) // - supplied class will be redefined as non-virtual: VirtualTableExternalRegister // explicit call is to be made if table should be managed as external ................................................................................ constructor TSQLModel.Create(CloneFrom: TSQLModel); var i: integer; begin if CloneFrom=nil then raise EModelException.CreateUTF8('%.Create(CloneFrom=nil)',[self]); fTables := CloneFrom.fTables; fTablesMax := CloneFrom.fTablesMax; if fTablesMax<>High(fTables) then raise EModelException.CreateUTF8('%.Create: incorrect CloneFrom.TableMax',[self]); fRoot := CloneFrom.fRoot; fActions := CloneFrom.fActions; fEvents := CloneFrom.fEvents; fRestOwner := CloneFrom.fRestOwner; fSortedTablesName := CloneFrom.fSortedTablesName; fSortedTablesNameIndex := CloneFrom.fSortedTablesNameIndex; fRecordReferences := CloneFrom.fRecordReferences; ................................................................................ for i := 0 to high(NonVisibleTables) do Tables[i+TabParametersCount] := NonVisibleTables[i]; Create(Tables,aRoot); fRestOwner := Owner; SetActions(Actions); SetEvents(Events); end; constructor TSQLModel.Create; begin raise EModelException.CreateUTF8('Plain %.Create is not allowed: use overloaded Create()',[self]); end; constructor TSQLModel.Create(const Tables: array of TSQLRecordClass; const aRoot: RawUTF8); var N, i: integer; begin N := length(Tables); if N>sizeof(SUPERVISOR_ACCESS_RIGHTS.Get)*8 then // TSQLAccessRights bits size raise EModelException.CreateUTF8('% for "%" has too many Tables: %>%', |
Changes to SynopseCommit.inc.
1 |
'1.18.1213'
|
| |
1 |
'1.18.1214'
|