現在ドキュメントは制作段階にあるため、多くの情報が不完全なものになっています

報告は Discord までお願いします

テーブル

概要

キーと値のペアでデータを保存します

定義

omu.tables.json<T>(name, options)
から定義することができます

  • T?: データの型
  • name: テーブルの名前。同じ名前で複数のテーブルを作ることはできません
  • options
    • key: 型Tを引数に取り識別子となるキーを返す関数

以下が定義例です

1
type User = {
2
    id: string;
3
    name: string;
4
}
5

6
// テーブルの定義
7
const users = omu.tables.json<User>('users', {
8
    key: (item) => item.id,
9
});

アイテムの操作

.clear()
を使ってすべてのアイテムを削除します

.add(...items)
,
.update(...items)
を使ってアイテムを追加、編集します

addとupdateはどちらも値を更新しますが、呼び出されるイベントが異なります

.remove(...items)
を使ってアイテムを削除します

1
// 全削除
2
await users.clear();
3

4
// 追加
5
await users.add({
6
    id: 'user-0',
7
    name: 'foo',
8
});
9

10
// 編集
11
await users.update({
12
    id: 'user-0',
13
    name: 'bar',
14
});

アイテムの取得

.fetchAll()
を使ってすべてのアイテムを取得します
.fetchItems({ limit, backward?, cursor? })
を使って指定した量のアイテムを取得します

  • limit: 最大アイテム取得数制限
  • backward?: 最後に追加されたアイテムから取得するかどうか
  • cursor?: 取得する起点となるアイテムのキー

.fetchRange({ start, end })
を使って指定した範囲のアイテムを取得します

  • start: 取得範囲の最初のキー
  • end: 取得範囲の最後のキー
1
// 全取得
2
const users = await users.fetchAll();
3

4
// 最初・最後から指定した数だけ
5
const lastUsers = await users.fetchItems({
6
    limit: 10,
7
    backward: true, // trueの場合後ろ(最後に追加された順)から取得します
8
    // 指定した場所から取得する場合cursorオプションが使えます
9
    // cursor: 'user20'
10
});
11

12
// 2つの範囲をすべて取得
13
const users = await users.fetchRange({
14
    start: 'user0',
15
    end: 'user10'
16
});
使用するパッケージマネージャー