This folder hosts the RESTful ORM high-level features of the mORMot Open Source framework, version 2.
mORMot implements a simple and very efficient Object-Relational-Mapping:
- The parent
TOrmclass give access to ORM methods at object level; IRestOrm IRestOrmServer IRestOrmClientinterfaces can be used in business code for abstract and persistent-agnostic data access;- UTF-8 and JSON are used from the ground up, to make our ORM easy to consume in a REST approach, as defined in the
/src/restfolder; - It can leverage SQLite3 as its kernel, to access several data sources over virtual tables;
- A high-performance in-memory engine, using JSON or binary on disk, can be used instead of SQLite3;
- Switch to a NoSQL database like MongoDB is possible, transforming our ORM to an ODM - aka Object-Document-Mapping.
Low-Level Basic Types and Definitions for our RESTful ORM
- Shared ORM/JSON Fields and Values Definitions
- ORM Ready UTF-8 Comparison Functions
TOrmWriterClass forTOrmSerializationTOrmPropInfoORM / RTTI Classes- Abstract
TOrmTableAbstractParent Class TOrmTableRowVariantCustom Variant TypeTOrmLocksandTOrmCacheTableBasic Structures
Main Shared Types and Definitions for our RESTful ORM
- ORM Specific
TOrmPropInfoRttiClasses IRestOrm IRestOrmServer IRestOrmClientDefinitionsTOrmDefinitionRecordRefWrapper DefinitionTOrmTable TOrmTableJsonDefinitionsTOrmManyDefinitionTOrmVirtualDefinitionsTOrmPropertiesDefinitionsTOrmModel TOrmModelPropertiesDefinitionsTOrmCacheDefinitionTRestBatch TRestBatchLockedDefinitionsTSynValidateRest TSynValidateUniqueFieldDefinitionsTOrmAccessRightsDefinitionTOrmHigh-Level Parents
This unit is not depending from mormot.rest.core so can be used as a pure ORM layer for your projects.
The IRestOrm interface is the main SOLID entry point of all ORM process.
IRestOrm Implementation as used by TRest
- Some definitions Used by
TRestOrmImplementation TRestOrmParent Class for abstract REST client/server
Client-Side Object-Relational-Mapping (ORM) Process
TRestOrmClientAbstract ClientTRestOrmClientURIREST Client from URI
Server-Side Object-Relational-Mapping (ORM) Process
TRestOrmServerAbstract ServerTRestOrmServerBatchSendforTRestBachServer-Side Process
Server-Side Storage Process using JSON or Binary Persistence
- Virtual Table ORM Support
TRestStorageAbstract Class for ORM/REST StorageTRestStorageInMemoryas Stand-Alone JSON/Binary StorageTOrmVirtualTableJSON/TOrmVirtualTableBinaryVirtual TablesTRestStorageRemotefor CRUD RedirectionTRestStorageShardas Abstract Sharded Storage Engine
ORM SQL Database Access using mormot.db.sql units
TRestStorageExternalfor ORM/REST Storage over SQLTOrmVirtualTableExternalfor External SQL Virtual Tables- External SQL Database Engines Registration Functions
ORM SQLite3 Database Access using mormot.db.raw.sqlite3 unit
TOrmTableDBas Efficient ORM-Aware TOrmTableTOrmVirtualTableModuleServerDBfor SQLite3 Virtual TablesTRestStorageShardDBfor REST Storage Sharded Over SQLite3 FilesTRestOrmServerDBREST Server ORM Engine over SQLite3TRestOrmClientDBREST Client ORM Engine over SQLite3
ORM/ODM MongoDB Database Access using mormot.db.nosql.mongodb unit
TRestStorageMongoDBfor REST Storage Over MongoDB- High-Level Functions to Initialize MongoDB ORM