dao 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/dao.gemspec +3 -1
- data/db/dao.yml +5 -0
- data/lib/dao.rb +1 -1
- data/lib/dao/api/interfaces.rb +22 -3
- data/lib/dao/db.rb +9 -1
- data/lib/dao/rails/lib/generators/dao/templates/api.rb +40 -4
- metadata +5 -4
data/dao.gemspec
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
Gem::Specification::new do |spec|
|
5
5
|
spec.name = "dao"
|
6
|
-
spec.version = "3.
|
6
|
+
spec.version = "3.3.0"
|
7
7
|
spec.platform = Gem::Platform::RUBY
|
8
8
|
spec.summary = "dao"
|
9
9
|
spec.description = "description: dao kicks the ass"
|
@@ -14,6 +14,8 @@ Gem::Specification::new do |spec|
|
|
14
14
|
"TODO",
|
15
15
|
"a.rb",
|
16
16
|
"dao.gemspec",
|
17
|
+
"db",
|
18
|
+
"db/dao.yml",
|
17
19
|
"lib",
|
18
20
|
"lib/dao",
|
19
21
|
"lib/dao.rb",
|
data/lib/dao.rb
CHANGED
data/lib/dao/api/interfaces.rb
CHANGED
@@ -11,6 +11,7 @@ module Dao
|
|
11
11
|
@state ||= {
|
12
12
|
:interfaces => {},
|
13
13
|
:blocks => {},
|
14
|
+
:README => [],
|
14
15
|
:docs => []
|
15
16
|
}
|
16
17
|
end
|
@@ -37,8 +38,8 @@ module Dao
|
|
37
38
|
state[:interfaces]
|
38
39
|
end
|
39
40
|
|
40
|
-
def description(
|
41
|
-
doc(:description =>
|
41
|
+
def description(*args)
|
42
|
+
doc(:description => lines_for(*args))
|
42
43
|
end
|
43
44
|
alias_method('desc', 'description')
|
44
45
|
|
@@ -47,7 +48,7 @@ module Dao
|
|
47
48
|
doc = docs.last
|
48
49
|
options = Dao.options_for!(args)
|
49
50
|
if options.empty?
|
50
|
-
options[:description] = args
|
51
|
+
options[:description] = lines_for(*args)
|
51
52
|
end
|
52
53
|
doc.update(options)
|
53
54
|
doc
|
@@ -57,8 +58,26 @@ module Dao
|
|
57
58
|
state[:docs]
|
58
59
|
end
|
59
60
|
|
61
|
+
def readme(*args)
|
62
|
+
if args.empty?
|
63
|
+
state[:README]
|
64
|
+
else
|
65
|
+
state[:README] = lines_for(args)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
alias_method('README', 'readme')
|
69
|
+
|
70
|
+
def lines_for(*args)
|
71
|
+
Dao.unindent(args.flatten.compact.join("\n")).split(/\n/)
|
72
|
+
end
|
73
|
+
|
74
|
+
def readme=(readme)
|
75
|
+
self.readme = readme.to_s
|
76
|
+
end
|
77
|
+
|
60
78
|
def index
|
61
79
|
index = Map.new
|
80
|
+
index[:README] = readme
|
62
81
|
interfaces.each do |path, interface|
|
63
82
|
index[path] = interface.doc || {'description' => ''}
|
64
83
|
end
|
data/lib/dao/db.rb
CHANGED
@@ -44,6 +44,13 @@ module Dao
|
|
44
44
|
find(id)
|
45
45
|
end
|
46
46
|
|
47
|
+
def []=(id, data = {})
|
48
|
+
data.delete(:id)
|
49
|
+
data.delete('id')
|
50
|
+
data[:id] = id
|
51
|
+
save(data)
|
52
|
+
end
|
53
|
+
|
47
54
|
def delete(id)
|
48
55
|
@db.delete(@name, id)
|
49
56
|
end
|
@@ -61,9 +68,10 @@ module Dao
|
|
61
68
|
end
|
62
69
|
end
|
63
70
|
|
64
|
-
def
|
71
|
+
def collection(name)
|
65
72
|
Collection.new(name, db)
|
66
73
|
end
|
74
|
+
alias_method('[]', 'collection')
|
67
75
|
|
68
76
|
def transaction(*args, &block)
|
69
77
|
ystore.transaction(*args, &block)
|
@@ -1,13 +1,28 @@
|
|
1
1
|
Api =
|
2
2
|
Dao.api do
|
3
|
+
##
|
4
|
+
#
|
5
|
+
README <<-__
|
6
|
+
this a dao api
|
7
|
+
|
8
|
+
so nice
|
9
|
+
|
10
|
+
so good
|
11
|
+
__
|
3
12
|
|
4
|
-
|
5
|
-
|
13
|
+
##
|
14
|
+
#
|
15
|
+
doc '/ping - hello world without a user'
|
16
|
+
call('/ping'){
|
6
17
|
data.update :time => Time.now
|
7
18
|
}
|
8
19
|
|
9
|
-
|
10
|
-
|
20
|
+
doc '/pong - hello world with a user'
|
21
|
+
call('/pong'){
|
22
|
+
require_current_user!
|
23
|
+
data.update :time => Time.now
|
24
|
+
data.update :current_user => current_user.id
|
25
|
+
}
|
11
26
|
|
12
27
|
## this is simply a suggested way to model your api. it is not required.
|
13
28
|
#
|
@@ -23,6 +38,8 @@ Api =
|
|
23
38
|
@real_user ||= @effective_user
|
24
39
|
end
|
25
40
|
|
41
|
+
## no doubt you'll want to customize this!
|
42
|
+
#
|
26
43
|
def user_for(arg)
|
27
44
|
User.respond_to?(:for) ? User.for(arg) : User.find(arg)
|
28
45
|
end
|
@@ -51,6 +68,25 @@ Api =
|
|
51
68
|
def current_user?
|
52
69
|
!!effective_user
|
53
70
|
end
|
71
|
+
|
72
|
+
def require_effective_user!
|
73
|
+
unless effective_user?
|
74
|
+
status :unauthorized
|
75
|
+
return!
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def require_real_user!
|
80
|
+
unless effective_user?
|
81
|
+
status :unauthorized
|
82
|
+
return!
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def require_current_user!
|
87
|
+
require_effective_user! and require_real_user!
|
88
|
+
end
|
89
|
+
alias_method('require_user!', 'require_current_user!')
|
54
90
|
end
|
55
91
|
|
56
92
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dao
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 3
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 3.
|
10
|
+
version: 3.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ara T. Howard
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-06-
|
18
|
+
date: 2011-06-09 00:00:00 -06:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -33,6 +33,7 @@ files:
|
|
33
33
|
- TODO
|
34
34
|
- a.rb
|
35
35
|
- dao.gemspec
|
36
|
+
- db/dao.yml
|
36
37
|
- lib/dao.rb
|
37
38
|
- lib/dao/active_record.rb
|
38
39
|
- lib/dao/api.rb
|