Flutter database for super-fast Dart object persistence
APACHE-2.0 License
Bot releases are visible (Hide)
Published by greenrobot-team almost 3 years ago
@Unique(onConflict: ConflictStrategy.replace)
toPublished by vaind about 3 years ago
Query.findUnique()
to find a single object matching the query.@Backlink()
annotation when specifying a ToOne
relation by field name.Query.find*()
exception forwarding when a user-provided property converter throws.analyzer
dependency version to include v2.x major version.Published by vaind over 3 years ago
Query.param()
on linked entities.openStore()
for apps that don't enable null-safety yet.Published by vaind over 3 years ago
openStore()
in the generated code to simplify creating a store instance, especially on Flutter (uses application@Entity(realClass: )
new field and its docs.Query.param()
to support reusable queries (changing condition values before execution).QueryRelationProperty
to QueryRelationToOne
and QueryRelationMany
to QueryRelationToMany
link()
vs linkMany()
.ToOne
relation cycles.Store
instances are not allowed).macOS
sandbox database directory permissions (see notes in Flutter-specific "Getting Started" docs).ToMany
showing duplicate items after adding them before reading the previous list.Published by vaind over 3 years ago
putAsync()
returning a Future
and putQueued()
for asynchronous writes.close()
manually if you want to free native resources soonerPropertyQuery.find()
now returns the appropriate List<...>
type without casts.inside()
renamed to oneOf()
, notIn()
and notInList()
renamed to notOneOf()
.stream
and findStream()
are replaced by QueryBuilder.watch()
, i.e. box.query(...).watch()
.stream()
to stream objects all the while the query is executed in the background.between()
for integers and IDs.subscribe<EntityType>()
renamed to watch()
.subscribeAll()
replaced by a shared broadcast stream entityChanges
.final
fields and they're properly stored/loaded (must be constructor params).UniqueViolationException
thrown when an object you're trying to put()
would violate a Unique()
index.Published by vaind over 3 years ago
This is a 1.0 release candidate - please try it out and give us any last-minute feedback, especially on new and changed APIs.
putAsync()
returning a Future
and putQueued()
for asynchronous writes.close()
manually if you want to free native resources soonerPropertyQuery.find()
now returns the appropriate List<...>
type without casts.inside()
renamed to oneOf()
, notIn()
and notInList()
renamed to notOneOf()
.stream
and findStream()
are replaced by QueryBuilder.watch()
, i.e. box.query(...).watch()
.stream()
to stream objects all the while the query is executed in the background.subscribe<EntityType>()
renamed to watch()
.subscribeAll()
replaced by a shared broadcast stream entityChanges
.final
fields and they're properly stored/loaded (must be constructor params).UniqueViolationException
thrown when an object you're trying to put()
would violate a Unique()
index.Published by vaind over 3 years ago
DateTime
fields deserialization regression (introduced in v0.13.0) - fields were read as nanosecond instead of millisecond timestamp.PropertyQuery.count()
with distinct = true
(the result was always like with caseSensitive = true
).findFirst()
doesn't change Query
object's offset
and limit
anymore.caseSensitive
default to true
, previously conditions were case-insensitive by default.queriesCaseSensitiveDefault
- allows changing the default value of caseSensitive
in queries.PropertyQuery
when using distinct = true
.Published by vaind over 3 years ago
offset
, limit
, withEqual
from Query
methods.Published by vaind over 3 years ago
Null safety pre-release, including new features and performance improvements (details will be specified in the final release).
Any feedback is welcome - raise a GitHub issue or comment on an existing one.
Published by vaind over 3 years ago
Published by vaind over 3 years ago
DateTime
entity fields, setting PropertyType.date
(millisecond storage precision).PropertyType.dateNano
for DateTime
fields (nanosecond storage precision).Store.reference
getter and Store.fromReference()
factory - enabling access to store from multiple isolates.Store.subscribe<EntityType>()
and Store.subscribeAll()
data change event streams.SyncClient
event streams.Query
conditions for lessOrEqual
/greaterOrEqual
on integer and double property types.@Id(assignable: true)
.Published by vaind over 3 years ago
List<String>
and List<int>
reading - replace official FlatBuffers lazy reader with a custom (eager) one.Published by vaind over 3 years ago
ToOne<>
class to wrap related entities. See examples for details.ToMany<>
class to wrap related entities. See examples for details.Box
read and write performance.Box.put()
and putMany()
- now also update given object's ID property.put()
the same new object instance multiple times without setting id, the object will nowBox.putMany()
and Query.FindIds()
to return fixed-size lists.Box.GetMany()
to return a fixed-size list by default, with an option to return a growable list.@Id()
annotation to optional - recognized automatically if there's an int id
field (case insensitive).observable.dart
part of objectbox.dart
exports, no need to import it separately.PutMode
- allowing semantics choice between put, update and insert.versionLib()
to nativeLibraryVersion()
.TxMode
enum values to lowercase.flags
from the Property()
annotation.Published by vaind almost 4 years ago
type
field on @Property()
annotation to PropertyType
.List<String>
.List<Int>
, Uint8List
, Int8List
.@Index()
and @Unique()
property annotationsQuery.remove()
to remove all objects matching the query.Query.findStream()
to only rerun on changes to the queried typeoffset
and limit
query parameters deprecated, use offset()
and limit()
instead.Published by vaind almost 4 years ago
box.get(id)
to return null instead of throwing when trying to read a non-existent object.box.query()
.lib/observable.dart
to avoid linter isues in apps using objectbox.ffigen
.descending
parameter, add caseSensitive
parameter.withEqual
is deprecated, use the greaterOrEqual/lessOrEqual condition instead.offset
and limit
parameters are deprecated, set them using the equally named methods instead.Published by vaind about 4 years ago
objectbox_flutter_libs
, add it as a new dependency if you use Flutter)@Transient
annotation to skip storing select propertiesByte
property as a signed int8
(was previously unsigned) to align with other bindingsPublished by vaind over 4 years ago
Published by vaind over 4 years ago