Class: Sqlar::Sqlar
- Inherits:
-
Object
- Object
- Sqlar::Sqlar
- Defined in:
- lib/sqlar.rb
Instance Attribute Summary collapse
-
#files ⇒ Object
Returns the value of attribute files.
Instance Method Summary collapse
- #create_sqlar ⇒ Object
- #extract(name) ⇒ Object
- #extract_all ⇒ Object
- #get_blob(file) ⇒ Object
-
#initialize(db_name) ⇒ Sqlar
constructor
A new instance of Sqlar.
- #insert(blob) ⇒ Object
Constructor Details
#initialize(db_name) ⇒ Sqlar
Returns a new instance of Sqlar.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/sqlar.rb', line 11 def initialize(db_name) @db_name = db_name begin SQLite3::Database.open(@db_name) do |db| db.results_as_hash = true rows = db.execute("SELECT * FROM sqlar") if rows.nil? create_sqlar() else @files = rows end end rescue SQLite3::Database.new(@db_name) create_sqlar() end end |
Instance Attribute Details
#files ⇒ Object
Returns the value of attribute files.
9 10 11 |
# File 'lib/sqlar.rb', line 9 def files @files end |
Instance Method Details
#create_sqlar ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/sqlar.rb', line 30 def create_sqlar() SQLite3::Database.open(@db_name) do |db| db.execute("CREATE TABLE sqlar( name TEXT PRIMARY KEY, mode INT, mtime INT, sz INT, data BLOB )" ) end end |
#extract(name) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/sqlar.rb', line 49 def extract(name) SQLite3::Database.open(@db_name) do |db| blob = db.get_first_value("SELECT data FROM sqlar WHERE name = ?",name) path = name.gsub(File.basename(name), '') FileUtils.makedirs(path) f = File.new(path+File.basename(name), "wb") f.write(blob) end end |
#extract_all ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/sqlar.rb', line 59 def extract_all() SQLite3::Database.open(@db_name) do |db| db.results_as_hash = true db.execute("SELECT * FROM sqlar") do |rows| blob = rows['data'] path = rows['name'].gsub(File.basename(rows['name']), '') begin FileUtils.makedirs(path) f = File.new(path+File.basename(rows['name']), "wb") f.chmod(rows['mode']) f.write(blob) File.utime(rows['mtime'], rows['mtime'],File.absolute_path(f.path)) rescue SystemCallError => e puts e ensure f.close if f end end end end |
#get_blob(file) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/sqlar.rb', line 80 def get_blob(file) begin file = File.open file, "rb" stat = file.lstat blob = file.read sqlar_blob = SqlarBlob.new sqlar_blob.name = File.absolute_path(file.path) sqlar_blob.mode = stat.mode sqlar_blob.mtime = stat.mtime.to_i sqlar_blob.sz = file.size sqlar_blob.data = SQLite3::Blob.new blob rescue SystemCallError => e puts e ensure file.close if file end return sqlar_blob end |
#insert(blob) ⇒ Object
42 43 44 45 46 47 |
# File 'lib/sqlar.rb', line 42 def insert(blob) SQLite3::Database.open(@db_name) do |db| blob.name[0] = '' db.execute("INSERT INTO sqlar (name, mode, mtime, sz,data) VALUES (?,?,?,?,?)",blob.name,blob.mode,blob.mtime,blob.sz,blob.data) end end |