tadb 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2da0e56b37341702665d402b68937939eea6940c
4
- data.tar.gz: 81a7ef2ac954587109f74d375a88f0d109d601ee
3
+ metadata.gz: 0fbc977dea8dfd5552918faa11cdc39462079e66
4
+ data.tar.gz: 3d09173b6b3141874676015d733108ab3ca4b933
5
5
  SHA512:
6
- metadata.gz: '04915b3d2bbcc0e432a80f4fb9847678b255ea05f84bb24e6347c1233cf83e8081efb53bfd5380f5ea52a2a12ec7dc357bc06764ff34372c1d63cdee448ea4ed'
7
- data.tar.gz: afee10ad4ccebaf66a191e1dc9f058989059820d68a6a0a309f26226776a79aca756edae3bb8353fb9a37e938031be0517a99edf7f15f85f515894b5a5eb2e0d
6
+ metadata.gz: 0d2476f8012e5a1d623f1104e81abf78b0bf490a0f6bdabc1f2b667ca4df9f430ef4f493c639da8facb6d6335093fcca748800e4ee760085693a6b39b8e37910
7
+ data.tar.gz: faca356a2d88bdcb8c3e61bf8e8aa3a72aa467c429927e8020127c0d5bcee1e8be22c07d0eef904f4a17664d15cdd53b43b30b6668fe25c84ff2f4bd999b2190
data/lib/tadb/db.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'fileutils'
2
+ module TADB
3
+ module DB
4
+
5
+ def self.table(table_name)
6
+ Table.new(table_name)
7
+ end
8
+
9
+ def self.clear_all
10
+ #FileUtils.remove_dir('./db', true)
11
+ Utils.db_files.each do |filename|
12
+ FileUtils.chdir('./db') do
13
+ File.delete(filename)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
data/lib/tadb/table.rb ADDED
@@ -0,0 +1,70 @@
1
+ require 'securerandom'
2
+ require 'json'
3
+
4
+ class TADB::Table
5
+
6
+ def initialize(name)
7
+ @name = name
8
+ end
9
+
10
+ def entries
11
+ file('r') do |f|
12
+ f.readlines.map do |line|
13
+ JSON.parse(line).map {|k, v| [k.to_sym, v]}.to_h
14
+ end
15
+ end
16
+ end
17
+
18
+ def insert(_entry)
19
+ entry = _entry.clone
20
+ entry[:id] ||= SecureRandom.uuid
21
+
22
+ validate_types(entry)
23
+
24
+ file('a') do |f|
25
+ f.puts(JSON.generate(entry))
26
+ end
27
+ entry[:id]
28
+ end
29
+
30
+ def delete(id)
31
+ remaining = entries.reject {|entry| entry[:id] === id}
32
+
33
+ file('w') do |f|
34
+ remaining.each do |entry|
35
+ f.puts(JSON.generate(entry))
36
+ end
37
+ end
38
+ end
39
+
40
+ def clear
41
+ File.open(db_path, 'w') {}
42
+ end
43
+
44
+ private
45
+
46
+ def file(mode, &block)
47
+ Dir.mkdir('./db') unless File.exists?('./db')
48
+ clear unless File.exists?(db_path)
49
+
50
+ File.open(db_path, mode) {|file| block.call(file)}
51
+ end
52
+
53
+ def db_path
54
+ "./db/#{@name}"
55
+ end
56
+
57
+ def validate_types(entry)
58
+ invalid_pairs = entry.select do |_, value|
59
+ !value.is_a?(String) && !value.is_a?(Numeric) && value != true && value != false
60
+ end
61
+
62
+ unless invalid_pairs.empty?
63
+ separator = '/n/t'
64
+ pairs_description = invalid_pairs
65
+ .map {|key, value| " #{key}: #{value}"}
66
+ .join(",#{separator}")
67
+ raise TypeError.new("Can't persist field(s) because they contain non-primitive values at" + separator + pairs_description)
68
+ end
69
+ end
70
+ end
data/lib/tadb/utils.rb ADDED
@@ -0,0 +1,7 @@
1
+ module Utils
2
+ class << self
3
+ def db_files
4
+ Dir.entries('./db').reject {|filename| filename == '.' || filename == '..'}
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module TADB
2
+ VERSION = '0.3.2'
3
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tadb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - UTN FRBA - TADP
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-11 00:00:00.000000000 Z
11
+ date: 2017-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-collection_matchers
@@ -74,6 +74,10 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - lib/tadb.rb
77
+ - lib/tadb/db.rb
78
+ - lib/tadb/table.rb
79
+ - lib/tadb/utils.rb
80
+ - lib/tadb/version.rb
77
81
  homepage: http://tadp-utn-frba.github.io/
78
82
  licenses:
79
83
  - MIT
@@ -81,11 +85,7 @@ metadata: {}
81
85
  post_install_message:
82
86
  rdoc_options: []
83
87
  require_paths:
84
- - lib/tadb/db.rb
85
- - lib/tadb/table.rb
86
- - lib/tadb/utils.rb
87
- - lib/tadb/version.rb
88
- - lib/tadb.rb
88
+ - lib
89
89
  required_ruby_version: !ruby/object:Gem::Requirement
90
90
  requirements:
91
91
  - - ">="