-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdb.rb
More file actions
71 lines (63 loc) · 1.81 KB
/
db.rb
File metadata and controls
71 lines (63 loc) · 1.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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
60
61
62
63
64
65
66
67
68
69
70
71
module DBUtils
require "logger"
require "sequel"
if not Object.const_defined?(:DB)
if not File.directory?('db')
Dir.mkdir('db')
end
DB = Sequel.sqlite 'db/fluff.sqlite', :loggers => [Logger.new($stderr)]
end
unless DB.table_exists?(:fluff)
DB.create_table :fluff do
primary_key :id
String :name, :unique => false, :empty => false
String :info, :unique => false, :empty => true
end
DB.alter_table(:fluff) do
add_unique_constraint [:name, :info]
end
end
unless DB.table_exists?(:map)
DB.create_table :map do
primary_key :id
Integer :fluff_id, :unique => false, :empty => false
String :map, :unique => false, :empty => false
Float :lat, :unique => false, :empty => false
Float :lng, :unique => false, :empty => false
end
DB.alter_table(:map) do
add_unique_constraint [:fluff_id, :map, :lat, :lng]
end
end
def DBUtils.add_fluff_to_map(map, fluff_id, lat, lng)
DB[:map].insert(
map: map,
fluff_id: fluff_id,
lat: lat,
lng: lng,
)
end
def DBUtils.add_fluff(name, info)
fid = DBUtils.get_fluffid(name, info)
if not fid
fid = DB[:fluff].insert(
name: name,
info: info,
)
end
return fid
end
def DBUtils.get_all_fluff_from_map(map)
return DB[:map].where(map: map).all
end
def DBUtils.get_all_fluff()
return DB[:fluff].all
end
def DBUtils.get_fluffid(name, info)
fluff = DB[:fluff].where(name: name, info: info).select(:id).first
if fluff
return fluff[:id]
end
return nil
end
end