Skip to content

Rulesets ​

db.rulesets.get returns read-only snapshots for rulesets. You can keep chaining filters or use normal array methods.

These examples use a small fixture that resets for every run. Your application still uses its own Realm database.

all ​

Returns all matching rulesets in a regular array.

ts
return db.rulesets.get
  .all()
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

toArray ​

Returns all matching rulesets in a regular array.

ts
return db.rulesets.get
  .toArray()
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

first ​

Returns the first matching ruleset, or undefined.

ts
return db.rulesets.get
  .first()?.Name

count ​

Counts all matching rulesets, even when a limit is set.

ts
return db.rulesets.get
  .count()

limit ​

Limits how many rulesets elements are accessed.

ts
return db.rulesets.get
  .limit(1)
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

sortedBy ​

Sorts rulesets by a database field.

ts
return db.rulesets.get
  .sortedBy('Name')
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

autoEdit ​

Starts an edit session that buffers changes to matching rulesets. Commit or roll them back when you are done.

ts
const session = db.rulesets.get
  .limit(1)
  .autoEdit()
const length = session.length
session.rollback()
return length

commit ​

Saves the pending changes.

ts
const session = db.rulesets.get
  .limit(1)
  .autoEdit()
const length = session.length
session.commit()
return length

rollback ​

Discards the pending changes.

ts
const session = db.rulesets.get
  .limit(1)
  .autoEdit()
const length = session.length
session.rollback()
return length

write.delete ​

Deletes every matching ruleset in one transaction.

ts
return db.rulesets.get
  .limit(1)
  .write.delete()

write.update ​

Applies a typed patch to every matching ruleset.

ts
return db.rulesets.get
  .limit(1)
  .write.update({ Available: true })

byAvailable ​

Finds rulesets where available matches the supplied value. You can chain more filters on the result.

ts
return db.rulesets.get
  .byAvailable(true)
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

byName ​

Finds rulesets where name matches the supplied value. You can chain more filters on the result.

ts
return db.rulesets.get
  .byName('osu!')
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

byNameContains ​

Finds rulesets where name contains the supplied value. You can chain more filters on the result.

ts
return db.rulesets.get
  .byNameContains('taiko')
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

byOnlineId ​

Finds rulesets where online ID matches the supplied value. You can chain more filters on the result.

ts
return db.rulesets.get
  .byOnlineId(0)
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

byShortName ​

Finds rulesets where short name matches the supplied value. You can chain more filters on the result.

ts
return db.rulesets.get
  .byShortName('osu')
  .map(item => ({
    shortName: item.ShortName,
    name: item.Name,
  }))

Released under the MIT License.