Class: Refi::SpreadsheetDbCache
- Inherits:
-
SpreadsheetDb
- Object
- SpreadsheetDb
- Refi::SpreadsheetDbCache
- Defined in:
- lib/spreadsheet_db-cache_refi.rb
Constant Summary collapse
- @@ext1_create_tbls_strs =
{ sheet_cached: %q( create table sheet_cached( sheet_id integer, cached integer, primary key(sheet_id), foreign key(sheet_id) references sheet(id) ); ) }.inject({}){|memo,(k,v)| memo[k] = v.strip_a_lot ; memo}.merge(@@std_create_tbls_strs)
- @@ext1_stmts_strs =
{ sheet_cached_set_sheet_cached: "insert or replace into sheet_cached(sheet_id,cached) values(?,?);", sheet_cached_get_cached_by_sheet: "select cached from sheet_cached where sheet_id=?;", sheet_cached_get_all: "select * from sheet_cached;", }.merge(@@std_stmts_strs)
- @@ext1_tbl_create_order =
@@std_tbl_create_order + [:sheet_cached]
Instance Method Summary collapse
- #create_cache ⇒ Object
- #get_sheet(sheet_xid) ⇒ Object
- #import_metadata(metadata) ⇒ Object
- #import_sheet(sheet_id, ss) ⇒ Object
- #import_sheet_names(sheet_names) ⇒ Object
-
#initialize(db_pn, ss_pn, ss_manager) ⇒ SpreadsheetDbCache
constructor
A new instance of SpreadsheetDbCache.
- #is_sheet_cached?(sheet_id) ⇒ Boolean
- #set_sheet_cached_state(sheet_id, state) ⇒ Object
Constructor Details
#initialize(db_pn, ss_pn, ss_manager) ⇒ SpreadsheetDbCache
Returns a new instance of SpreadsheetDbCache.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/spreadsheet_db-cache_refi.rb', line 34 def initialize(db_pn,ss_pn,ss_manager) @create_tbls_strs = @@ext1_create_tbls_strs @stmts_strs = @@ext1_stmts_strs @tbl_create_order = @@ext1_tbl_create_order init2 @pn = db_pn @ss_pn = ss_pn @ss_manager = ss_manager @db_pn = db_pn has_old_db = File.exist?(db_pn) if(has_old_db) open = () if(.at_least?(@ss_manager.(ss_pn))) # old db good else # old db metadata bad reset File.delete(db_pn) create_cache end else # no old db create_cache end end |
Instance Method Details
#create_cache ⇒ Object
60 61 62 63 64 65 66 67 |
# File 'lib/spreadsheet_db-cache_refi.rb', line 60 def create_cache open @db.transaction{|foo| #set_feature("sheet_cache",true) import_sheet_names(@ss_manager.get_ss(@ss_pn).sheets) (@ss_manager.(@ss_pn)) } end |
#get_sheet(sheet_xid) ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/spreadsheet_db-cache_refi.rb', line 91 def get_sheet(sheet_xid) if sheet_xid == nil $Log.tlog({id: 'err1040'}) end sheet_id = get_sheet_id_from_xid(sheet_xid) if(!is_sheet_cached?(sheet_id)) ss = @ss_manager.get_ss(@ss_pn) sheet_name = get_sheet_name_from_xid(sheet_id) if sheet_name == nil $Log.tlog({id: 'err1070',sheet_id:sheet_id,sheet_xid:sheet_xid}) end puts 'sheet_name:' pp sheet_name ss.default_sheet = sheet_name import_sheet(sheet_id,ss) end super end |
#import_metadata(metadata) ⇒ Object
80 81 82 83 84 |
# File 'lib/spreadsheet_db-cache_refi.rb', line 80 def () .each{|name,value| @prep_stmts[:metadata_set_nam_val].execute(name,value) } end |
#import_sheet(sheet_id, ss) ⇒ Object
109 110 111 112 |
# File 'lib/spreadsheet_db-cache_refi.rb', line 109 def import_sheet(sheet_id,ss) super set_sheet_cached_state(sheet_id,1) end |
#import_sheet_names(sheet_names) ⇒ Object
68 69 70 71 72 73 74 75 |
# File 'lib/spreadsheet_db-cache_refi.rb', line 68 def import_sheet_names(sheet_names) sheet_names.each_index{|sheet_ix| sheet_name = sheet_names[sheet_ix] pos = sheet_ix id = create_sheet(sheet_name,pos) set_sheet_cached_state(id,0) } end |
#is_sheet_cached?(sheet_id) ⇒ Boolean
85 86 87 88 89 90 |
# File 'lib/spreadsheet_db-cache_refi.rb', line 85 def is_sheet_cached?(sheet_id) # TODO prep_ex ? is_cached = ( @prep_stmts[:sheet_cached_get_cached_by_sheet].execute!(sheet_id).flatten[0] == 1 ) #pp @prep_stmts[:sheet_cached_get_cached_by_sheet].execute!(sheet_id) return is_cached end |
#set_sheet_cached_state(sheet_id, state) ⇒ Object
76 77 78 79 |
# File 'lib/spreadsheet_db-cache_refi.rb', line 76 def set_sheet_cached_state(sheet_id,state) dperr(324,"sheet_id must be of integer type (sheet_id.class:#{sheet_id.class.to_s})") unless sheet_id.is_a?(Fixnum) @prep_stmts[:sheet_cached_set_sheet_cached].execute(sheet_id,state) end |