TinyDSメモ(Base編)
JRuby on gae/jで使えるDatastoreのラッパーであるTinyDSの個人的メモ (0.0.3 pre)
間違っていたら指摘をお願いします。
TinyDS::Base
エンティティの基底クラス。基本的な使い方
class Person << TinyDS::Base property :user_name, :string end # 作成 Person.create({:user_name => "hoge"}) # idから検索 hoge = Person.get_by_id(id) puts hoge.user_name #=> hoge
保存したいプロパティはproperty :カラム名, :型名で定義
プロパティの型
シンボル | 説明 |
---|---|
string | 文字列 RubyのString(500byte以下) |
integer | 整数 RubyのInteger |
text | 長い文字列 RubyのString(DatastoreのTextクラス) |
time | 日付 RubyのTime |
list | リスト RubyのArray |
float | 浮動小数点 RubyのFloat *0.0.2にはない |
boolean | ブール値 Rubyのtrue/false *0.0.2にはない |
floatとbooleanを使うにはGithubから最新版を取得する必要がある。
予約されているプロパティ名
- id: Keyのid
- name: Keyのname
- key: key
- entity: Baseの中で使っている
- parent_key: 親のKey
- parent: 親
プロパティ名がcreated_atとupdated_atの場合はsaveを行う際に自動的に作成日と更新日時が設定される。
メソッド
メソッド名 | 説明 |
---|---|
initialize(attrs={}, opts={} | コンストラクタ attrs:このエンティティに設定したいプロパティのHash(key=>name, value=>値) opts:オプションのHash :id, :name, :key, :parentと:entityが指定できる。 :id:このエンティティのidに指定したい整数値 :name:このエンティティのKeyのnameに指定したい文字列 :key:このエンティティのKeyに指定したいKey :id, :name, :keyはいずれか1つだけ指定可能。2以上指定すると例外 :id, :name, :keyを指定しない場合は:id自動発番 :parent:Hashの値にエンティティを入れておくと、それを親エンティティとして作成する。 :entity:Hashの値にエンティティ(生のEntity)を入れておくと、それを元にエンティティを作成する。 :entityを指定しない場合、newで作成した場合は新規レコード扱い(new_record==true)になり、saveするまでDatastoreには格納されない。 |
self.property(name, type, opts={}) | プロパティを定義する。 name:プロパティの名前 type:プロパティの型 opts:オプション opts[:default]=デフォルト値とすることでデフォルト値を渡せる。 デフォルト値はProcオブジェクトでもよく、Procの場合はそれをcallした結果がデフォルト値になる。 |
self.property_definitions | 定義されているプロパティを取得する(key=>name, value=>PropertyDefinitionsのHash) |
>self.property_definitions(name) | nameで指定されたプロパティ定義を取得する。存在しない場合は例外 |
self.valid_property?(name, context) | nameで指定されたプロパティが存在すればtrue。contextは使っていないっぽい |
self.has_property?(name) | nameで指定されたプロパティが存在すればtrue。 |
self.default_attrs | デフォルト値の一覧を返す(key=>name, value=>デフォルト値のHash) |
self.kind | このエンティティのKindを返す |
key | このエンティティのKeyを返す |
id | このエンティティのidを返す |
name | このエンティティのnameを返す |
parent_key | このエンティティの親のKeyを返す |
self.to_key(m) | 渡されたオブジェクトをKeyとして返す。mの種類によって以下の動作となる。 Key=>そのまま Entity=>m.key String=>KeyFactory.stringToKey(m)で生成したKey Base=>m.key それ以外=>例外 |
self.allocate_ids(num) | Datastore.allocate_ids(kind, num)の結果(KeyRange) |
self.allocate_id | Datstore.allocate_ids(1).startの結果(Key) |
self.create(attrs={}, opts={}) | エンティティの作成と同時にDatastoreに保存する。 引数はinitializeと同じ。保存する前にvalid?が呼ばれ、不正なエンティティの場合falseが返る。 |
self.create! | エンティティの作成と同時にDatastoreに保存する。 引数はinitializeと同じ。保存する前にvalid?が呼ばれ、不正なエンティティの場合RecordInvalid例外がスローされる。 |
self.new_from_entity(_entity) | 既存のエンティティ(生Entity)からエンティティを生成する。 |
valid? | このエンティティが有効かをチェックする。デフォルト実装では常にtrueを返す。createやsaveのときに暗黙的に呼ばれる。 |
new_record? | 新規レコード(まだDatastoreに格納されていない)の場合trueを返す。 |
save | Datastoreに保存する。保存する前にvalid?が実行され、不正なエンティティの場合falseを返す。 |
save! | Datastoreに保存する。保存する前にvalid?が実行され、不正なエンティティの場合RecordInvalid例外がスローされる。 |
self.get!(key) | 指定したkeyのエンティティを取得する。エンティティが見つからない場合EntityNotFound例外をスロー |
self.get(key) | 指定したkeyのエンティティを取得する。エンティティが見つからない場合nil |
self.build_key(id_or_name, parent) | Keyを生成する。 |
self._get_by_id_or_name!(id_or_name, parent) | 指定したidまたはnameのエンティティを取得する。エンティティが見つからない場合EntityNotFound例外 |
self.get_by_id!(id, parent=nil) | 指定したidのエンティティを取得する。エンティティが見つからない場合EntityNotFound例外 |
self.get_by_id(id, parent=nil) | 指定したidのエンティティを取得する。エンティティが見つからない場合nil |
self.get_by_name!(name, parent=nil) | 指定したnameのエンティティを取得する。エンティティが見つからない場合EntityNotFound例外 |
self.get_by_name(name, parent=nil) | 指定したnameのエンティティを取得する。エンティティが見つからない場合nil |
self.get_by_ids(ids, parent=nil) | 指定したidのエンティティを取得する。idsはidのArray。 |
self.get_by_names(names, parent=nil) | 指定したnameのエンティティを取得する。namesはnameのArray |
self.query | Queryオブジェクトを返す。詳しくはQueryについてを参照。 |
self.count | このKindの件数を返す |
destroy | このエンティティを削除する |
self.destroy(array) | 指定されたArrayに含まれるエンティティを削除する |
self.destroy_all | このKindのすべてのエンティティを削除する |
read_only | このエンティティを読み取り専用にする |
reget | Datastoreから再度読み込み直す。トランザクション用らしい? |
tx(opts={}, &block) | トランザクション内でblockを実行する。 optsには:retritesと:force_beginが指定可能。 :retriesはトランザクションの再試行回数(Datastore.transaction(retries)を参照) :force_beginはDatastore.current_transaction(nil)で強制的にトランザクションを開始する |
attributes=(attrs) | 属性を設定する |
set_property(k,v) | プロパティを設定する |
get_property(k) | プロパティを取得する |
0 件のコメント:
コメントを投稿