Class: AlPersist

Inherits:
Object
  • Object
show all
Defined in:
lib/al_persist.rb

Overview

データ永続化 ベースクラス

Direct Known Subclasses

AlPersistFile, AlPersistRDB, AlPersistSh

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Constructor Details

- (AlPersist) initialize(base, keys = nil)

constructor

Parameters:

  • base (AlRdbw)

    使用する RDB wrapper オブジェクト

  • keys (Array<String,Symbol>, String, Symbol) (defaults to: nil)

    プライマリキー



39
40
41
42
43
44
45
# File 'lib/al_persist.rb', line 39

def initialize( base, keys = nil )
  @persist_base = base
  @values = {}
  @result = nil
  pkey( keys )
  @search_condition = {}
end

Instance Attribute Details

- (AlRdbw) persist_base (readonly)

Returns 使用する RDB wrapper オブジェクト

Returns:

  • (AlRdbw)

    使用する RDB wrapper オブジェクト



18
19
20
# File 'lib/al_persist.rb', line 18

def persist_base
  @persist_base
end

- (Array<Symbol>) pkeys (readonly)

Returns プライマリキーの配列

Returns:

  • (Array<Symbol>)

    プライマリキーの配列



27
28
29
# File 'lib/al_persist.rb', line 27

def pkeys
  @pkeys
end

- (Hash) result (readonly)

Returns CxUDメソッドの実行結果(DBwrapperからの結果保存)

Returns:

  • (Hash)

    CxUDメソッドの実行結果(DBwrapperからの結果保存)



24
25
26
# File 'lib/al_persist.rb', line 24

def result
  @result
end

- (Hash) search_condition (readonly)

Returns 検索条件のキャッシュ

Returns:

  • (Hash)

    検索条件のキャッシュ



30
31
32
# File 'lib/al_persist.rb', line 30

def search_condition
  @search_condition
end

- (Hash) values

Returns 管理するアトリビュート

Returns:

  • (Hash)

    管理するアトリビュート



21
22
23
# File 'lib/al_persist.rb', line 21

def values
  @values
end

Instance Method Details

- (String) [](k)

attribute getter

Parameters:

  • k (Symbol)

    キー

Returns:

  • (String)



80
81
82
# File 'lib/al_persist.rb', line 80

def []( k )
  return @values[k.to_sym]
end

- (Object) []=(k, v)

attribute setter

Parameters:

  • k (Symbol)

    キー

  • v (String)



91
92
93
# File 'lib/al_persist.rb', line 91

def []=( k, v )
  @values[k.to_sym] = v
end

- (Integer, Nil) get_next_offset

検索時、次ページのオフセット値を得る

Returns:

  • (Integer, Nil)

    オフセット値。次ページがなければnil。



101
102
103
104
# File 'lib/al_persist.rb', line 101

def get_next_offset()
  return nil  if ! @search_condition[:has_next_page]
  return @search_condition[:offset].to_i + @search_condition[:limit].to_i
end

- (Integer, Nil) get_previous_offset

検索時、前ページのオフセット値を得る

Returns:

  • (Integer, Nil)

    オフセット値。前ページがなければnil。



112
113
114
115
116
117
118
# File 'lib/al_persist.rb', line 112

def get_previous_offset()
  offset = @search_condition[:offset].to_i
  prev = offset - @search_condition[:limit].to_i

  return nil  if offset <= 0
  return prev < 0 ? 0 : prev
end

- (self) pkey(*keys)

primary key setter

Parameters:

  • keys (Symbol, String)

    プライマリキー

Returns:

  • (self)

    selfオブジェクト



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/al_persist.rb', line 54

def pkey( *keys )
  @pkeys = []

  keys.flatten.each do |k|
    case k
    when String
      @pkeys << k.to_sym
    when Symbol
      @pkeys << k
    when NilClass
      # nothing
    else
      raise 'Needs key by String or Symbol'
    end
  end

  return self
end