merge latest object store
This commit is contained in:
commit
fc5ed389e1
|
@ -0,0 +1,15 @@
|
||||||
|
# Realm Object Store
|
||||||
|
|
||||||
|
Cross-platform code used accross bindings. Binding developers can choose to use some or all the included functionality
|
||||||
|
- `object_store`/`schema`/`object_schema`/`property` - contains the structures and logic used to setup and modify realm files and their schema.
|
||||||
|
- `shared_realm` - wraps the object_store apis to provide transactions, notifications, realm caching, migrations, and other higher level functionality.
|
||||||
|
- `object_accessor`/`results`/`list` - accessor classes, object creation/update pipeline, and helpers for creating platform specific property getters and setters.
|
||||||
|
- `parser`/`query_builder` - cross platform query parser and query builder - requires and object_accessor specialization for argument support. Depends on https://github.com/ColinH/PEGTL
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
TBD
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
TBD
|
|
@ -334,7 +334,7 @@ Predicate parse(const std::string &query)
|
||||||
return std::move(out_predicate);
|
return std::move(out_predicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
void analyzeGrammar()
|
void analyze_grammar()
|
||||||
{
|
{
|
||||||
analyze<pred>();
|
analyze<pred>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,8 +79,8 @@ struct Predicate
|
||||||
|
|
||||||
Predicate parse(const std::string &query);
|
Predicate parse(const std::string &query);
|
||||||
|
|
||||||
void analyzeGrammar();
|
void analyze_grammar();
|
||||||
bool testGrammar();
|
bool test_grammar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -382,7 +382,7 @@ auto value_of_type_for_query(TableGetter&& tables, Value&& value, Arguments &arg
|
||||||
{
|
{
|
||||||
const bool isColumn = std::is_same<PropertyExpression, typename std::remove_reference<Value>::type>::value;
|
const bool isColumn = std::is_same<PropertyExpression, typename std::remove_reference<Value>::type>::value;
|
||||||
using helper = std::conditional_t<isColumn, ColumnGetter<RetType, TableGetter>, ValueGetter<RetType, TableGetter>>;
|
using helper = std::conditional_t<isColumn, ColumnGetter<RetType, TableGetter>, ValueGetter<RetType, TableGetter>>;
|
||||||
return helper::convert(std::forward<TableGetter>(tables), std::forward<Value>(value), args);
|
return helper::convert(tables, value, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename A, typename B>
|
template <typename A, typename B>
|
||||||
|
|
|
@ -134,7 +134,7 @@ static std::vector<std::string> invalid_queries = {
|
||||||
namespace realm {
|
namespace realm {
|
||||||
namespace parser {
|
namespace parser {
|
||||||
|
|
||||||
bool testGrammar()
|
bool test_grammar()
|
||||||
{
|
{
|
||||||
bool success = true;
|
bool success = true;
|
||||||
for (auto &query : valid_queries) {
|
for (auto &query : valid_queries) {
|
||||||
|
|
|
@ -36,19 +36,19 @@ using namespace realm;
|
||||||
|
|
||||||
Results::Results(SharedRealm r, const ObjectSchema &o, Query q, SortOrder s)
|
Results::Results(SharedRealm r, const ObjectSchema &o, Query q, SortOrder s)
|
||||||
: m_realm(std::move(r))
|
: m_realm(std::move(r))
|
||||||
|
, m_object_schema(&o)
|
||||||
, m_query(std::move(q))
|
, m_query(std::move(q))
|
||||||
, m_table(m_query.get_table().get())
|
, m_table(m_query.get_table().get())
|
||||||
, m_sort(std::move(s))
|
, m_sort(std::move(s))
|
||||||
, m_mode(Mode::Query)
|
, m_mode(Mode::Query)
|
||||||
, m_object_schema(&o)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Results::Results(SharedRealm r, const ObjectSchema &o, Table& table)
|
Results::Results(SharedRealm r, const ObjectSchema &o, Table& table)
|
||||||
: m_realm(std::move(r))
|
: m_realm(std::move(r))
|
||||||
|
, m_object_schema(&o)
|
||||||
, m_table(&table)
|
, m_table(&table)
|
||||||
, m_mode(Mode::Table)
|
, m_mode(Mode::Table)
|
||||||
, m_object_schema(&o)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -135,9 +135,10 @@ public:
|
||||||
// The input index parameter was out of bounds
|
// The input index parameter was out of bounds
|
||||||
struct OutOfBoundsIndexException : public std::out_of_range
|
struct OutOfBoundsIndexException : public std::out_of_range
|
||||||
{
|
{
|
||||||
OutOfBoundsIndexException(size_t r, size_t c) : requested(r), valid_count(c),
|
OutOfBoundsIndexException(size_t r, size_t c) :
|
||||||
std::out_of_range((std::string)"Requested index " + to_string(r) +
|
std::out_of_range((std::string)"Requested index " + to_string(r) +
|
||||||
" greater than max " + to_string(c)) {}
|
" greater than max " + to_string(c)),
|
||||||
|
requested(r), valid_count(c) {}
|
||||||
const size_t requested;
|
const size_t requested;
|
||||||
const size_t valid_count;
|
const size_t valid_count;
|
||||||
};
|
};
|
||||||
|
@ -150,7 +151,7 @@ public:
|
||||||
// The input Row object belongs to a different table
|
// The input Row object belongs to a different table
|
||||||
struct IncorrectTableException : public std::runtime_error {
|
struct IncorrectTableException : public std::runtime_error {
|
||||||
IncorrectTableException(StringData e, StringData a, const std::string &error) :
|
IncorrectTableException(StringData e, StringData a, const std::string &error) :
|
||||||
expected(e), actual(a), std::runtime_error(error) {}
|
std::runtime_error(error), expected(e), actual(a) {}
|
||||||
const StringData expected;
|
const StringData expected;
|
||||||
const StringData actual;
|
const StringData actual;
|
||||||
};
|
};
|
||||||
|
|
|
@ -87,6 +87,10 @@ Realm::Realm(Config config)
|
||||||
throw RealmFileException(RealmFileException::Kind::Exists, ex.get_path(),
|
throw RealmFileException(RealmFileException::Kind::Exists, ex.get_path(),
|
||||||
"File at path '" + ex.get_path() + "' already exists.");
|
"File at path '" + ex.get_path() + "' already exists.");
|
||||||
}
|
}
|
||||||
|
catch (util::File::NotFound const& ex) {
|
||||||
|
throw RealmFileException(RealmFileException::Kind::NotFound, ex.get_path(),
|
||||||
|
"File at path '" + ex.get_path() + "' does not exist.");
|
||||||
|
}
|
||||||
catch (util::File::AccessError const& ex) {
|
catch (util::File::AccessError const& ex) {
|
||||||
throw RealmFileException(RealmFileException::Kind::AccessError, ex.get_path(),
|
throw RealmFileException(RealmFileException::Kind::AccessError, ex.get_path(),
|
||||||
"Unable to open a realm at path '" + ex.get_path() + "'");
|
"Unable to open a realm at path '" + ex.get_path() + "'");
|
||||||
|
|
Loading…
Reference in New Issue