Skip to content
This repository was archived by the owner on Apr 4, 2024. It is now read-only.

Latest commit

 

History

History
66 lines (48 loc) · 2.43 KB

README.ja.md

File metadata and controls

66 lines (48 loc) · 2.43 KB

Jinrai

Jinrai はカーソルベースのページネータです。

使い方

# config/initializers/jinrai.rb

Jinrai.configure do |config|
  config.default_cursor_per = 20 #=> User.cursor.count == 20
  config.default_cursor_format = :id, :name #=> cursor format will be "#{user.id}_#{user.name}"
  config.default_cursor_sort_order = :desc
end

モデルごとにリクエスト毎のレコード返却件数, カーソルのフォーマットを指定することができます。

# app/model/user.rb

class User < ApplicationRecord
  cursor_per 100
  cursor_format :name, :age
  cursor_sort_order :asc # default: :desc
end

User.cursor.count #=> 100
User.cursor.since_cursor # #{user.name}_#{user.age}のフォーマットのカーソルを生成します。
User.cursor # 最新のレコードをcursor_perの数だけ返却します。
User.cursor.count #=> 20

User.after(cursor) # カーソルが指し示すレコード以降のデータを返します
User.before(cursor) # カーソルが指し示すレコード以前のデータを返します

.cursorメソッドは tillsince,sort_atの 3 つの引数を持っていて, 任意の範囲のレコードを取り出したり、特定の属性で並び替えることができます.

since_cursor = User.cursor.till_cursor
User.cursor(since: since_cursor) # since_cursor移行のレコードセットを返します

till_cursor = User.cursor.since_cursor
User.cursor(till: till_cursor) # till_cursor以前のレコードセットを返します

# sinceとtillを同時に指定することもできて、この場合since_corsor以降、till_cursor以前の範囲に含まれるレコードの最新cursor_per件を返します.
User.cursor(since: since_cursor, till: till_cursor)

カーソルはコレクションに対して#since_cursor, #till_cursorを呼び出すか、model のインスタンスに対して#to_cursorを呼び出すことで取得できます。

users = User.cursor
users.since_cursor # コレクションの最初のレコードを指し示すカーソルを返します
users.till_cursor # コレクションの最後のレコードを指し示すカーソルを返します

.cursor メソッドは order 引数を使って、順序を指定することができます。 (sort_at は古い仕様なので、orderの使用をお勧めします)

User.cursor(order: { age: :desc, name: :asc })