zeddb 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,77 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module ZedDB
19
+ class ModelItem < Zedkit::Instance
20
+ def model
21
+ ZedDB::Model.new(:user_key => uk, :locale => lc, :uuid => self['model']['uuid'])
22
+ end
23
+
24
+ def validations
25
+ self.has_key?('validations') && self['validations'].is_a?(Array) ? self['validations'] : []
26
+ end
27
+ def transformers
28
+ self.has_key?('transformers') && self['transformers'].is_a?(Array) ? self['transformers'] : []
29
+ end
30
+
31
+ def update
32
+ end
33
+ def delete
34
+ ZedDB::ModelItems.delete(:user_key => uk, :locale => lc, :uuid => uuid)
35
+ end
36
+
37
+ def to_s
38
+ rs = "\nZedDB Data Item within Model \"#{model['name']}\":\n" \
39
+ << " Name : #{self['name']}\n" \
40
+ << " UUID : #{self['uuid']}\n" \
41
+ << " Type : #{self['type']['code']}\n" \
42
+ << " Validations : #{validations.count}\n" \
43
+ << " Transformers : #{transformers.count}\n" \
44
+ << " Version : #{self['version']}\n" \
45
+ << " Created : #{time(self['created_at'])}\n" \
46
+ << " Updated : #{time(self['updated_at'])}\n"
47
+ if validations.empty? && transformers.empty?
48
+ rs << dashes(20) << "\n"
49
+ else
50
+ unless validations.empty?
51
+ rs << dashes(70) << "| #{'Data Item Validations'.center(66)} |\n" << dashes(70) \
52
+ << "| #{'UUID'.ljust(32)} | #{'Code'.center(4)} | #{'Qualifier'.center(24)} |\n" << dashes(70)
53
+ validations.each {|vd| rs << "| #{vd['uuid']} | #{vd['validation']['code'].center(4)} | #{qualifier(vd)} |\n" }
54
+ rs << dashes(70)
55
+ end
56
+ unless transformers.empty?
57
+ rs << dashes(70) << "| #{'Data Item Transformers'.center(66)} |\n" << dashes(70) \
58
+ << "| #{'UUID'.ljust(32)} | #{'Code'.center(31)} |\n" << dashes(70)
59
+ transformers.each {|ts| rs << "| #{ts['uuid']} | #{ts['transformer']['code'].center(31)} |\n" }
60
+ rs << dashes(70)
61
+ end
62
+ rs << "\n"
63
+ end
64
+ rs
65
+ end
66
+
67
+ protected
68
+ def set_with_uuid(uuid_to_use)
69
+ replace ZedDB::ModelItems.get(:user_key => uk, :locale => lc, :uuid => uuid_to_use)
70
+ end
71
+
72
+ private
73
+ def qualifier(vd)
74
+ vd.has_key?('qualifier') ? vd['qualifer'].center(24) : 'N/A'.center(24)
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,34 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module ZedDB
19
+ class ModelTransformer < Zedkit::Instance
20
+ def model_item
21
+ ZedDB::ModelItem.new(:user_key => uk, :locale => lc, :uuid => item['uuid'])
22
+ end
23
+
24
+ def delete
25
+ ZedDB::ModelTransformers.delete(:user_key => uk, :locale => lc, :item => { :uuid => item['uuid'] }, :uuid => uuid)
26
+ end
27
+
28
+ protected
29
+ def set_with_owner_and_uuid(item_uuid, transformer_uuid)
30
+ replace ZedDB::ModelTransformers.get(:user_key => uk, :locale => lc,
31
+ :item => { :uuid => item_uuid }, :uuid => transformer_uuid)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module ZedDB
19
+ class ModelValidation < Zedkit::Instance
20
+ def model_item
21
+ ZedDB::ModelItem.new(:user_key => uk, :locale => lc, :uuid => item['uuid'])
22
+ end
23
+
24
+ def update
25
+ end
26
+ def delete
27
+ ZedDB::ModelValidations.delete(:user_key => uk, :locale => lc, :item => { :uuid => item['uuid'] }, :uuid => uuid)
28
+ end
29
+
30
+ protected
31
+ def set_with_owner_and_uuid(item_uuid, validation_uuid)
32
+ replace ZedDB::ModelValidations.get(:user_key => uk, :locale => lc,
33
+ :item => { :uuid => item_uuid }, :uuid => validation_uuid)
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,24 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module Zedkit
19
+ class Project < Zedkit::Instance
20
+ def models
21
+ Zedkit::Projects::Models.get(:user_key => uk, :locale => lc, :project => { :uuid => uuid })
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,66 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module ZedDB
19
+ class ModelAssociations
20
+ class << self
21
+ #
22
+ # = ZedDB Model Associations
23
+ #
24
+ # ZedDB models can be associated with each other in predetermined ways. You can create or delete model associations.
25
+ # A model's associations are listed within its response data set.
26
+ #
27
+ # To create a new Model Assocation you submit the required parameters of the association type with the model UUIDs that
28
+ # you are creating an association between. Whatever items you send within the :association Hash are passed through to
29
+ # the ZedAPI untouched. There is no client side validation within this gem.
30
+ #
31
+ # Associations can be confusing to create, given that the order is arbitary. But you would read an association as
32
+ # Model B belongs to Model A. So, to create a belongs_to association. You would be using the resource location based
33
+ # on Model B, creating an association to Model A, with "first" and "second" labels as you read the association aloud.
34
+ #
35
+ # ZedDB::ModelAssociations.create(:user_key => user['user_key'],
36
+ # :association => { :first => model_b['uuid'],
37
+ # :code => 'BT', :inverse => 'HM', :second => model_b['uuid] })
38
+ #
39
+ # To delete a Model Association:
40
+ #
41
+ # ZedDB::ModelAssociations.delete(:user_key => user['user_key'], :uuid => association['uuid])
42
+ #
43
+ # From each of these requests the Zedkit::Client class will return a response hash for your reference, if needed,
44
+ # or as applicable to the request. If there was a HTTP 401 or 404 you will get a nil response. This indicates a
45
+ # security failure or that an UUID is incorrect, not attached the user's account, or non-existent.
46
+ #
47
+ # For each request you can also pass a block to process the response directly:
48
+ #
49
+ # ZedDB::ModelAssociations.delete(:user_key => user['user_key'], :uuid => association['uuid]) do |result|
50
+ # end
51
+ #
52
+
53
+ def get(zks = {}, &block)
54
+ Zedkit::Client.crud(:get, "db/associations/#{zks[:uuid]}", zks, [], &block)
55
+ end
56
+
57
+ def create(zks = {}, &block)
58
+ Zedkit::Client.crud(:create, 'db/associations', zks, [], &block)
59
+ end
60
+
61
+ def delete(zks = {}, &block)
62
+ Zedkit::Client.crud(:delete, "db/associations/#{zks[:uuid]}", zks, [], &block)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,73 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module ZedDB
19
+ class ModelItems
20
+ class << self
21
+ #
22
+ # = ZedDB Models Data Items
23
+ #
24
+ # All ZedDB models need data items. You can create, read, update, or delete model data items. To perform an
25
+ # operation on a specific model item you need its UUID, as available from the Models.get() method.
26
+ #
27
+ # To get a Model Item:
28
+ #
29
+ # ZedDB::ModelItems.get(:user_key => user['user_key'], :uuid => item['uuid'])
30
+ #
31
+ # To update a Model Item:
32
+ #
33
+ # ZedDB::ModelItems.update(:user_key => user['user_key'], :uuid => item['uuid'], :item => { :name => 'newname' })
34
+ #
35
+ # To delete a Model Item:
36
+ #
37
+ # ZedDB::ModelItems.delete(:user_key => user['user_key'], :uuid => item['uuid])
38
+ #
39
+ # To create a new Model Item you submit the required parameters with the model UUID that you are creating the
40
+ # model item within. Whatever items you send within the :item Hash are passed through to the ZedAPI untouched.
41
+ # There is no client side validation within this gem.
42
+ #
43
+ # ZedDB::ModelItems.create(:user_key => user['user_key'],
44
+ # :model => { :uuid => model['uuid'] }, :item => { :name => 'whatever' })
45
+ #
46
+ # From each of these requests the Zedkit::Client class will return a response hash for your reference, if needed,
47
+ # or as applicable to the request. If there was a HTTP 401 or 404 you will get a nil response. This indicates a
48
+ # security failure or that an UUID is incorrect, not attached the user's account, or non-existent.
49
+ #
50
+ # For each request you can also pass a block to process the response directly:
51
+ #
52
+ # ZedDB::ModelItems.get(:user_key => user['user_key'], :uuid => model['uuid']) do |result|
53
+ # end
54
+ #
55
+
56
+ def get(zks = {}, &block)
57
+ Zedkit::Client.crud(:get, "db/items/#{zks[:uuid]}", zks, [], &block)
58
+ end
59
+
60
+ def create(zks = {}, &block)
61
+ Zedkit::Client.crud(:create, 'db/items', zks, [], &block)
62
+ end
63
+
64
+ def update(zks = {}, &block)
65
+ Zedkit::Client.crud(:update, "db/items/#{zks[:uuid]}", zks, [], &block)
66
+ end
67
+
68
+ def delete(zks = {}, &block)
69
+ Zedkit::Client.crud(:delete, "db/items/#{zks[:uuid]}", zks, [], &block)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,62 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module ZedDB
19
+ class ModelTransformers
20
+ class << self
21
+ #
22
+ # = ZedDB Model Transformers
23
+ #
24
+ # ZedDB model data items can have standard "transformers" attached to them -- actions to be performed on the data item
25
+ # just before it is saved to the underlying storage system. You can create or delete model item transformers.
26
+ # A model item's transformers are listed within its response data set.
27
+ #
28
+ # To create a new Model Transformer you submit the required parameters of the transformer type with the model item
29
+ # UUID that you are attaching a transformer to. Whatever items you send within the :transformer Hash are passed through
30
+ # to the ZedAPI untouched. There is no client side validation within this gem.
31
+ #
32
+ # ZedDB::ModelTransformers.create(:user_key => user['user_key'], :item => { :uuid => item['uuid'] },
33
+ # :transformer => { :code => 'UP' })
34
+ #
35
+ # To delete a Model Transformer:
36
+ #
37
+ # ZedDB::ModelTransformers.delete(:user_key => user['user_key'], :uuid => transformer['uuid])
38
+ #
39
+ # From each of these requests the Zedkit::Client class will return a response hash for your reference, if needed,
40
+ # or as applicable to the request. If there was a HTTP 401 or 404 you will get a nil response. This indicates a
41
+ # security failure or that an UUID is incorrect, not attached the user's account, or non-existent.
42
+ #
43
+ # For each request you can also pass a block to process the response directly:
44
+ #
45
+ # ZedDB::ModelTransformers.delete(:user_key => user['user_key'], :uuid => transformer['uuid]) do |result|
46
+ # end
47
+ #
48
+
49
+ def get(zks = {}, &block)
50
+ Zedkit::Client.crud(:get, "db/items/#{zks[:item][:uuid]}/transformers/#{zks[:uuid]}", zks, %w(item), &block)
51
+ end
52
+
53
+ def create(zks = {}, &block)
54
+ Zedkit::Client.crud(:create, "db/items/#{zks[:item][:uuid]}/transformers", zks, %w(item), &block)
55
+ end
56
+
57
+ def delete(zks = {}, &block)
58
+ Zedkit::Client.crud(:delete, "db/items/#{zks[:item][:uuid]}/transformers/#{zks[:uuid]}", zks, [], &block)
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,66 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module ZedDB
19
+ class ModelValidations
20
+ class << self
21
+ #
22
+ # = ZedDB Model Validations
23
+ #
24
+ # ZedDB model data items can have standard validations attached to them. You can create, update (if applicable to
25
+ # the validation type) or delete model item validations. A model item's validations are listed within its API
26
+ # response data set.
27
+ #
28
+ # To create a new model item validation you submit the required parameters of the validation type with the model item
29
+ # UUID that you are attaching a valiation to. Whatever items you send within the :validation Hash are passed through
30
+ # to the ZedAPI untouched. There is no client side validation within this gem.
31
+ #
32
+ # ZedDB::ModelValidations.create(:user_key => user['user_key'], :item => { :uuid => item['uuid'] },
33
+ # :validation => { :code => "SB" })
34
+ #
35
+ # To delete a model item validation:
36
+ #
37
+ # ZedDB::ModelValidations.delete(:user_key => user['user_key'], :uuid => validation['uuid])
38
+ #
39
+ # From each of these requests the Zedkit::Client class will return a response hash for your reference, if needed,
40
+ # or as applicable to the request. If there was a HTTP 401 or 404 you will get a nil response. This indicates a
41
+ # security failure or that an UUID is incorrect, not attached the user's account, or non-existent.
42
+ #
43
+ # For each request you can also pass a block to process the response directly:
44
+ #
45
+ # ZedDB::ModelValidations.delete(:user_key => user['user_key'], :uuid => validation['uuid]) do |result|
46
+ # end
47
+ #
48
+
49
+ def get(zks = {}, &block)
50
+ Zedkit::Client.crud(:get, "db/items/#{zks[:item][:uuid]}/validations/#{zks[:uuid]}", zks, %w(item), &block)
51
+ end
52
+
53
+ def create(zks = {}, &block)
54
+ Zedkit::Client.crud(:create, "db/items/#{zks[:item][:uuid]}/validations", zks, %w(item), &block)
55
+ end
56
+
57
+ def update(zks = {}, &block)
58
+ Zedkit::Client.crud(:update, "db/items/#{zks[:item][:uuid]}/validations/#{zks[:uuid]}", zks, %w(item), &block)
59
+ end
60
+
61
+ def delete(zks = {}, &block)
62
+ Zedkit::Client.crud(:delete, "db/items/#{zks[:item][:uuid]}/validations/#{zks[:uuid]}", zks, [], &block)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,73 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module ZedDB
19
+ class Models
20
+ class << self
21
+ #
22
+ # = ZedDB Database Models
23
+ #
24
+ # All ZedDB application databases have models. You can create, read, update, or delete models. To perform an
25
+ # operation on a specific model you need its UUID, as available from the Websites.models method.
26
+ #
27
+ # To get a Model:
28
+ #
29
+ # ZedDB::Models.get(:user_key => user['user_key'], :uuid => model['uuid'])
30
+ #
31
+ # To update a Model:
32
+ #
33
+ # ZedDB::Models.update(:user_key => user['user_key'], :uuid => model['uuid'])
34
+ #
35
+ # To delete a Model:
36
+ #
37
+ # ZedDB::Models.delete(:user_key => user['user_key'], :uuid => model['uuid'])
38
+ #
39
+ # To create a new Model you submit the required parameters with the project UUID that you are creating the
40
+ # model for. Whatever items you send within the :model Hash are passed through to the ZedAPI untouched.
41
+ # There is no client side validation within this gem.
42
+ #
43
+ # ZedDB::Models.create(:user_key => user['user_key'],
44
+ # :project => { :uuid => project['uuid'] }, :model => { :name => 'whatever' })
45
+ #
46
+ # From each of these requests the Zedkit::Client class will return a response hash for your reference, if needed,
47
+ # or as applicable to the request. If there was a HTTP 401 or 404 you will get a nil response. This indicates a
48
+ # security failure or that an UUID is incorrect, not attached the user's account, or non-existent.
49
+ #
50
+ # For each request you can also pass a block to process the response directly:
51
+ #
52
+ # ZedDB::Models.get(:user_key => user['user_key'], :uuid => model['uuid']) do |result|
53
+ # end
54
+ #
55
+
56
+ def get(zks = {}, &block)
57
+ Zedkit::Client.crud(:get, "db/models/#{zks[:uuid]}", zks, [], &block)
58
+ end
59
+
60
+ def create(zks = {}, &block)
61
+ Zedkit::Client.crud(:create, 'db/models', zks, [], &block)
62
+ end
63
+
64
+ def update(zks = {}, &block)
65
+ Zedkit::Client.crud(:update, "db/models/#{zks[:uuid]}", zks, [], &block)
66
+ end
67
+
68
+ def delete(zks = {}, &block)
69
+ Zedkit::Client.crud(:delete, "db/models/#{zks[:uuid]}", zks, [], &block)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,40 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ module Zedkit
19
+ class Projects
20
+ class Models
21
+ class << self
22
+ #
23
+ # = ZedDB Application Databases
24
+ #
25
+ # All projects/applications have an assigned database whether they use it or not. We just bypass the concept of a
26
+ # separate database API resource. You ask the project/application directly for the models setup within its database:
27
+ #
28
+ # Zedkit::Projects.Models.get(:user_key => user['user_key'], :project => { :uuid => project['uuid'] })
29
+ #
30
+ # Each Zedkit project/application has an unique UUID available within the user's projects list, which you can then use
31
+ # here, and with all methods that collect objects attached to a project/application.
32
+ #
33
+
34
+ def get(zks = {}, &block)
35
+ Zedkit::Client.crud(:get, 'db/models', zks, [], &block)
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
data/lib/zeddb.rb ADDED
@@ -0,0 +1,34 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ require 'rubygems'
19
+ require 'zedkit'
20
+
21
+ module ZedDB
22
+ class << self
23
+ def entities(user_key)
24
+ rs = Zedkit::Client.get('entities/zeddb', user_key)
25
+ if rs && block_given?
26
+ rs.is_a?(Array) ? rs.each {|i| yield(i) } : yield(rs)
27
+ end
28
+ rs
29
+ end
30
+ end
31
+ end
32
+
33
+ Dir["#{File.dirname(__FILE__)}/zeddb/instances/*.rb"].each {|ci| require ci }
34
+ Dir["#{File.dirname(__FILE__)}/zeddb/resources/*.rb"].each {|ci| require ci }
data/test/helper.rb ADDED
@@ -0,0 +1,47 @@
1
+ ##
2
+ # Copyright (c) Zedkit.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
5
+ # files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
6
+ # modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
7
+ # Software is furnished to do so, subject to the following conditions:
8
+ #
9
+ # The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
10
+ # Software.
11
+ #
12
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
13
+ # WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
14
+ # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
15
+ # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
16
+ ##
17
+
18
+ require 'test/unit'
19
+ require 'rubygems'
20
+ require 'zeddb'
21
+
22
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
23
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
24
+
25
+ class Test::Unit::TestCase
26
+ TEST_GEMS_PROJECT_KEY = 'BE1OZog8gJogtQTosh'
27
+ TEST_GEMS_LOGIN = 'gems@zedkit.com'
28
+ TEST_GEMS_PASSWORD = 'NGIaDhr5vDlXo1tDs6bW3Gd'
29
+
30
+ def setup
31
+ Zedkit.configure do |zb|
32
+ zb.project_key = TEST_GEMS_PROJECT_KEY
33
+ # zb.exceptions = true
34
+ # zb.api_host = '0.0.0.0'
35
+ # zb.api_port = 5010
36
+ end
37
+ @uu = Zedkit::Users.verify(:username => TEST_GEMS_LOGIN, :password => TEST_GEMS_PASSWORD)
38
+ end
39
+
40
+ protected
41
+ def pmodels
42
+ Zedkit::Projects::Models.get(:user_key => @uu['user_key'], :project => { :uuid => @uu['projects'][0] })
43
+ end
44
+ def item_model
45
+ pmodels.find {|i| i['name'] == 'item' }
46
+ end
47
+ end