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
TOrm
class give access to ORM methods at object level; IRestOrm IRestOrmServer IRestOrmClient
interfaces 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/rest
folder; - 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
TOrmWriter
Class forTOrm
SerializationTOrmPropInfo
ORM / RTTI Classes- Abstract
TOrmTableAbstract
Parent Class TOrmTableRowVariant
Custom Variant TypeTOrmLocks
andTOrmCacheTable
Basic Structures
Main Shared Types and Definitions for our RESTful ORM
- ORM Specific
TOrmPropInfoRtti
Classes IRestOrm IRestOrmServer IRestOrmClient
DefinitionsTOrm
DefinitionRecordRef
Wrapper DefinitionTOrmTable TOrmTableJson
DefinitionsTOrmMany
DefinitionTOrmVirtual
DefinitionsTOrmProperties
DefinitionsTOrmModel TOrmModelProperties
DefinitionsTOrmCache
DefinitionTRestBatch TRestBatchLocked
DefinitionsTSynValidateRest TSynValidateUniqueField
DefinitionsTOrmAccessRights
DefinitionTOrm
High-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
TRestOrm
Implementation TRestOrm
Parent Class for abstract REST client/server
Client-Side Object-Relational-Mapping (ORM) Process
TRestOrmClient
Abstract ClientTRestOrmClientURI
REST Client from URI
Server-Side Object-Relational-Mapping (ORM) Process
TRestOrmServer
Abstract ServerTRestOrmServerBatchSend
forTRestBach
Server-Side Process
Server-Side Storage Process using JSON or Binary Persistence
- Virtual Table ORM Support
TRestStorage
Abstract Class for ORM/REST StorageTRestStorageInMemory
as Stand-Alone JSON/Binary StorageTOrmVirtualTableJSON
/TOrmVirtualTableBinary
Virtual TablesTRestStorageRemote
for CRUD RedirectionTRestStorageShard
as Abstract Sharded Storage Engine
ORM SQL Database Access using mormot.db.sql
units
TRestStorageExternal
for ORM/REST Storage over SQLTOrmVirtualTableExternal
for External SQL Virtual Tables- External SQL Database Engines Registration Functions
ORM SQLite3 Database Access using mormot.db.raw.sqlite3
unit
TOrmTableDB
as Efficient ORM-Aware TOrmTableTOrmVirtualTableModuleServerDB
for SQLite3 Virtual TablesTRestStorageShardDB
for REST Storage Sharded Over SQlite3 FilesTRestOrmServerDB
REST Server ORM Engine over SQLite3TRestOrmClientDB
REST Client ORM Engine over SQLite3
ORM/ODM MongoDB Database Access using mormot.db.nosql.mongodb
unit
TRestStorageMongoDB
for REST Storage Over MongoDB- High-Level Functions to Initialize MongoDB ORM