1.3 KiB
1.3 KiB
Todo
- move
prepare_*methods fromdialecttoquery_compiler - add
session_insert_builderandsession_update_builder(returning multiple statements) - finish fetch eager has-many/belongs-to relations
- implement lazy loading
- implement polymorphic class hierarchies
- finish
schema_repositoryclasses (move add/drop fromsessiontoschema) - implement a flag class for enumerations
Proposal for polymorphic classes:
object_ptr::as does the following checks;
- The requested type has a super class
- Super class has a discriminator column defined
- Super class has a discriminator value defined
- Discriminator value is mapped to the requested type
If all checks succeed, the requested is fetched from the database.
schema.attach<jobs::Payload>("payloads", make_polymorph("type"));
schema.attach<jobs::Payload, jobs::IdPayload>("id_list_payloads", make_polymorph_type("IdPayload"));
schema.attach<jobs::Payload, jobs::IdListPayload>("id_payloads", make_polymorph_type("IdListPayload"));
object::object_ptr<jobs::Payload> payload;
auto result = payload.as<jobs::IdPayload>();
if (result.is_ok()) {
const auto& is_payload = result.value();
// Use requested type
id_payload->id = 1;
}
payload.is_polymorphic();
payload.is_polymorphic_type<jobs::IdPayload>();