The data mapper is a high level API for mapping records to and from the database using high level C++ syntax.
More...
|
template<auto Field> |
using | Lightweight::ReferencedFieldTypeOf = typename std::remove_cvref_t< decltype(std::declval< MemberClassType< decltype(Field)> >().*Field)>::ValueType |
| Retrieves the type of a member field in a record.
|
|
template<size_t... Ints> |
using | Lightweight::SqlElements = std::integer_sequence< size_t, Ints... > |
| Represents a sequence of indexes that can be used alongside Query() to retrieve only part of the record.
|
|
The data mapper is a high level API for mapping records to and from the database using high level C++ syntax.
◆ ReferencedFieldTypeOf
Retrieves the type of a member field in a record.
Field must be a member of the record type, and it must be a field type, e.g. Field<int>
or BelongsTo<OtherRecord>
.
using MyRecord = Record {
};
using MyFieldType = ReferencedFieldTypeOf<&MyRecord::value>;
using MyOptionalFieldType = ReferencedFieldTypeOf<&MyRecord::optionalValue>;
Represents a single column in a table.
Definition at line 358 of file Field.hpp.
◆ SqlElements
Represents a sequence of indexes that can be used alongside Query() to retrieve only part of the record.
Definition at line 20 of file Record.hpp.
◆ GetPrimaryKeyField()
template<typename Record >
LIGHTWEIGHT_FORCE_INLINE RecordPrimaryKeyType< Record > Lightweight::GetPrimaryKeyField |
( |
Record const & |
record | ) |
|
|
inlinenoexcept |
◆ RecordStorageFieldCount
template<typename Record >
constexpr size_t Lightweight::RecordStorageFieldCount |
|
constexpr |
Initial value:=
Reflection::FoldMembers<Record>(
size_t { 0 }, []<
size_t I,
typename Field>(
size_t const accum)
constexpr {
return accum + 1;
else
return accum;
})
Represents the number of fields with storage in a record.
Definition at line 137 of file Record.hpp.
◆ HasPrimaryKey
template<typename T >
constexpr bool Lightweight::HasPrimaryKey = detail::CheckFieldProperty<[]<typename Field>() { return IsPrimaryKey<Field>; }, T> |
|
constexpr |
Tests if the given record type does contain a primary key.
Definition at line 165 of file Record.hpp.
◆ HasAutoIncrementPrimaryKey
template<typename T >
constexpr bool Lightweight::HasAutoIncrementPrimaryKey |
|
constexpr |
Initial value:=
detail::CheckFieldProperty<[]<typename Field>() { return IsAutoIncrementPrimaryKey<Field>; }, T>
Tests if the given record type does contain an auto increment primary key.
Definition at line 171 of file Record.hpp.
◆ FieldNameAt
template<std::size_t I, typename Record >
constexpr std::string_view Lightweight::FieldNameAt = detail::FieldNameAt<I, Record>() |
|
inlineconstexpr |
◆ RecordTableName
template<typename Record >
constexpr std::string_view Lightweight::RecordTableName = detail::RecordTableNameImpl<Record>::Value |
|
constexpr |
Holds the SQL tabl ename for the given record type.
Definition at line 176 of file Utils.hpp.
◆ FullyQualifiedNameOf
template<auto ReferencedField>
constexpr auto Lightweight::FullyQualifiedNameOf |
|
inlineconstexpr |
Initial value:= SqlRawColumnNameView {
.value = detail::FullyQualifiedNameOfImpl<ReferencedField>::value,
}
Holds the quoted fully qualified field name (including table name) of the given field.
- Template Parameters
-
auto const quotedFieldName = FullyQualifiedNameOf<&Person::id>;
static_assert(quotedFieldName.value == R"sql("Person"."id")sql");
Definition at line 311 of file Utils.hpp.
◆ FullyQualifiedNamesOf
template<auto... ReferencedFields>
constexpr auto Lightweight::FullyQualifiedNamesOf |
|
inlineconstexpr |
Initial value:= SqlRawColumnNameView {
.value = detail::FullyQualifiedNamesOfImpl<ReferencedFields...>::value,
}
Holds the quoted fully qualified field names of the given fields.
auto const quotedFieldNames = FullyQualifiedNamesOf<&Person::id, &Person::name, &Person::age>;
static_assert(quotedFieldNames.value == R"sql("Person"."id", "Person"."name", "Person"."age")sql");
Definition at line 356 of file Utils.hpp.