#1 2012-09-14 06:30:43

From: France
Registered: 2010-06-21
Posts: 13,648

Code refactoring: introducing TSQLModelRecordProperties

I have performed huge code refactoring of the ORM model implementation: since the same TSQLRecord can be defined in several models, with diverse implementation patterns (e.g. internal in one, external in another), a new dedicated TSQLModelRecordProperties will contain per-TSQLModel parameters, whereas shared information retrieved by RTTI remain in TSQLRecordProperties - this will allow use of the same TSQLRecord in several TSQLModel at once, with dedicated SQL auto-generation and external DB settings.
See http://synopse.info/fossil/info/cc9865c5b4

In any application sharing TSQLRecord classes among several models - like in http://synopse.info/forum/viewtopic.php?pid=5063#p5063 - previous implementation sounded too optimistic.
A domain-driven designed project may use several layers (at least one for application, either for the domain), with shared TSQLRecord instances.

At least, TSQLAuthGroup and TSQLAuthUser are always shared among servers or clients (if you use authentication), and their ORM persistence settings should be preserved among the corresponding TSQLRest instance, and its associated TSQLModel.

I would expect TSQLRecordProperties to contain only raw RTTI information, then a new TSQLModel.Props[] array containing all associated ORM information for a every TSQLRecord class, in the context of this ORM model.
That is, a new TSQLModelRecordProperties class has been defined and used in SQLite3Commons.pas.


Board footer

Powered by FluxBB