dynomite 1.2.7 → 2.0.1
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.
- checksums.yaml +4 -4
- data/.gitignore +17 -2
- data/CHANGELOG.md +21 -0
- data/Gemfile +1 -5
- data/LICENSE.txt +22 -0
- data/README.md +6 -190
- data/Rakefile +13 -1
- data/dynomite.gemspec +9 -2
- data/exe/dynomite +14 -0
- data/lib/dynomite/associations/association.rb +126 -0
- data/lib/dynomite/associations/belongs_to.rb +35 -0
- data/lib/dynomite/associations/has_and_belongs_to_many.rb +19 -0
- data/lib/dynomite/associations/has_many.rb +19 -0
- data/lib/dynomite/associations/has_one.rb +19 -0
- data/lib/dynomite/associations/many_association.rb +257 -0
- data/lib/dynomite/associations/single_association.rb +157 -0
- data/lib/dynomite/associations.rb +248 -0
- data/lib/dynomite/autoloader.rb +25 -0
- data/lib/dynomite/cli.rb +48 -0
- data/lib/dynomite/client.rb +118 -0
- data/lib/dynomite/command.rb +89 -0
- data/lib/dynomite/completer/script.rb +6 -0
- data/lib/dynomite/completer/script.sh +10 -0
- data/lib/dynomite/completer.rb +159 -0
- data/lib/dynomite/config.rb +39 -0
- data/lib/dynomite/core.rb +18 -19
- data/lib/dynomite/engine.rb +15 -0
- data/lib/dynomite/erb.rb +5 -3
- data/lib/dynomite/error.rb +12 -0
- data/lib/dynomite/help/completion.md +20 -0
- data/lib/dynomite/help/completion_script.md +3 -0
- data/lib/dynomite/help/migrate.md +3 -0
- data/lib/dynomite/help.rb +9 -0
- data/lib/dynomite/install.rb +4 -0
- data/lib/dynomite/item/abstract.rb +15 -0
- data/lib/dynomite/item/components.rb +33 -0
- data/lib/dynomite/item/dsl.rb +101 -0
- data/lib/dynomite/item/id.rb +41 -0
- data/lib/dynomite/item/indexes/finder.rb +58 -0
- data/lib/dynomite/item/indexes/index.rb +21 -0
- data/lib/dynomite/item/indexes/primary_index.rb +18 -0
- data/lib/dynomite/item/indexes.rb +25 -0
- data/lib/dynomite/item/locking.rb +53 -0
- data/lib/dynomite/item/magic_fields.rb +66 -0
- data/lib/dynomite/item/primary_key.rb +85 -0
- data/lib/dynomite/item/query/delegates.rb +28 -0
- data/lib/dynomite/item/query/params/base.rb +42 -0
- data/lib/dynomite/item/query/params/expression_attribute.rb +79 -0
- data/lib/dynomite/item/query/params/filter.rb +41 -0
- data/lib/dynomite/item/query/params/function/attribute_exists.rb +21 -0
- data/lib/dynomite/item/query/params/function/attribute_type.rb +30 -0
- data/lib/dynomite/item/query/params/function/base.rb +33 -0
- data/lib/dynomite/item/query/params/function/begins_with.rb +32 -0
- data/lib/dynomite/item/query/params/function/contains.rb +7 -0
- data/lib/dynomite/item/query/params/function/size_fn.rb +37 -0
- data/lib/dynomite/item/query/params/helpers.rb +94 -0
- data/lib/dynomite/item/query/params/key_condition.rb +34 -0
- data/lib/dynomite/item/query/params.rb +115 -0
- data/lib/dynomite/item/query/partiql/executer.rb +72 -0
- data/lib/dynomite/item/query/partiql.rb +67 -0
- data/lib/dynomite/item/query/relation/chain.rb +125 -0
- data/lib/dynomite/item/query/relation/comparision_expression.rb +21 -0
- data/lib/dynomite/item/query/relation/comparision_map.rb +19 -0
- data/lib/dynomite/item/query/relation/delete.rb +38 -0
- data/lib/dynomite/item/query/relation/ids.rb +21 -0
- data/lib/dynomite/item/query/relation/math.rb +19 -0
- data/lib/dynomite/item/query/relation/where_field.rb +32 -0
- data/lib/dynomite/item/query/relation/where_group.rb +78 -0
- data/lib/dynomite/item/query/relation.rb +127 -0
- data/lib/dynomite/item/query.rb +7 -0
- data/lib/dynomite/item/read/find.rb +196 -0
- data/lib/dynomite/item/read/find_with_event.rb +42 -0
- data/lib/dynomite/item/read.rb +90 -0
- data/lib/dynomite/item/sti.rb +43 -0
- data/lib/dynomite/item/table_namespace.rb +43 -0
- data/lib/dynomite/item/typecaster.rb +106 -0
- data/lib/dynomite/item/waiter_methods.rb +18 -0
- data/lib/dynomite/item/write/base.rb +15 -0
- data/lib/dynomite/item/write/delete_item.rb +14 -0
- data/lib/dynomite/item/write/put_item.rb +99 -0
- data/lib/dynomite/item/write/update_item.rb +73 -0
- data/lib/dynomite/item/write.rb +204 -0
- data/lib/dynomite/item.rb +113 -286
- data/lib/dynomite/migration/dsl/accessor.rb +19 -0
- data/lib/dynomite/migration/dsl/index/base.rb +42 -0
- data/lib/dynomite/migration/dsl/index/gsi.rb +59 -0
- data/lib/dynomite/migration/dsl/index/lsi.rb +27 -0
- data/lib/dynomite/migration/dsl/index.rb +72 -0
- data/lib/dynomite/migration/dsl/primary_key.rb +62 -0
- data/lib/dynomite/migration/dsl/provisioned_throughput.rb +38 -0
- data/lib/dynomite/migration/dsl.rb +89 -142
- data/lib/dynomite/migration/file_info.rb +28 -0
- data/lib/dynomite/migration/generator.rb +30 -16
- data/lib/dynomite/migration/helpers.rb +7 -0
- data/lib/dynomite/migration/internal/migrate/create_schema_migrations.rb +17 -0
- data/lib/dynomite/migration/internal/models/schema_migration.rb +6 -0
- data/lib/dynomite/migration/runner.rb +179 -0
- data/lib/dynomite/migration/templates/create_table.rb +7 -23
- data/lib/dynomite/migration/templates/delete_table.rb +7 -0
- data/lib/dynomite/migration/templates/update_table.rb +3 -18
- data/lib/dynomite/migration.rb +53 -10
- data/lib/dynomite/reserved_words.rb +13 -3
- data/lib/dynomite/seed.rb +13 -0
- data/lib/dynomite/types.rb +22 -0
- data/lib/dynomite/version.rb +1 -1
- data/lib/dynomite/waiter.rb +40 -0
- data/lib/dynomite.rb +11 -17
- data/lib/generators/application_item/application_item_generator.rb +30 -0
- data/lib/generators/application_item/templates/application_item.rb.tt +4 -0
- data/lib/jets/commands/dynamodb_command.rb +29 -0
- data/lib/jets/commands/help/generate.md +33 -0
- data/lib/jets/commands/help/migrate.md +3 -0
- metadata +201 -17
- data/docs/migrations/long-example.rb +0 -127
- data/docs/migrations/short-example.rb +0 -40
- data/lib/dynomite/db_config.rb +0 -121
- data/lib/dynomite/errors.rb +0 -15
- data/lib/dynomite/log.rb +0 -15
- data/lib/dynomite/migration/common.rb +0 -86
- data/lib/dynomite/migration/dsl/base_secondary_index.rb +0 -73
- data/lib/dynomite/migration/dsl/global_secondary_index.rb +0 -4
- data/lib/dynomite/migration/dsl/local_secondary_index.rb +0 -8
- data/lib/dynomite/migration/executor.rb +0 -38
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# Base class for LocalSecondaryIndex and GlobalSecondaryIndex
|
|
2
|
-
class Dynomite::Migration::Dsl
|
|
3
|
-
class BaseSecondaryIndex
|
|
4
|
-
include Common
|
|
5
|
-
|
|
6
|
-
attr_accessor :action, :key_schema, :attribute_definitions
|
|
7
|
-
attr_accessor :index_name
|
|
8
|
-
def initialize(action, index_name=nil, &block)
|
|
9
|
-
@action = action.to_sym
|
|
10
|
-
# for gsi action can be: :create, :update, :delete
|
|
11
|
-
# for lsi action is always: :create
|
|
12
|
-
@index_name = index_name
|
|
13
|
-
@block = block
|
|
14
|
-
|
|
15
|
-
# Dsl fills these atttributes in as methods are called within
|
|
16
|
-
# the block
|
|
17
|
-
@key_schema = []
|
|
18
|
-
@attribute_definitions = []
|
|
19
|
-
# default provisioned_throughput
|
|
20
|
-
@provisioned_throughput = {
|
|
21
|
-
read_capacity_units: 5,
|
|
22
|
-
write_capacity_units: 5
|
|
23
|
-
}
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def index_name
|
|
27
|
-
@index_name || conventional_index_name
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def conventional_index_name
|
|
31
|
-
# @partition_key_identifier and @sort_key_identifier are set as immediately
|
|
32
|
-
# when the partition_key and sort_key methods are called in the dsl block.
|
|
33
|
-
# Usually look like this:
|
|
34
|
-
#
|
|
35
|
-
# @partition_key_identifier: post_id:string
|
|
36
|
-
# @sort_key_identifier: updated_at:string
|
|
37
|
-
#
|
|
38
|
-
# We strip the :string portion in case it is provided
|
|
39
|
-
#
|
|
40
|
-
partition_key = @partition_key_identifier.split(':').first
|
|
41
|
-
sort_key = @sort_key_identifier.split(':').first if @sort_key_identifier
|
|
42
|
-
[partition_key, sort_key, "index"].compact.join('-')
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def evaluate
|
|
46
|
-
return if @evaluated
|
|
47
|
-
@block.call(self) if @block
|
|
48
|
-
@evaluated = true
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def params
|
|
52
|
-
evaluate # lazy evaluation: wait until as long as possible before evaluating code block
|
|
53
|
-
|
|
54
|
-
params = { index_name: index_name } # required for all actions
|
|
55
|
-
|
|
56
|
-
if @action == :create
|
|
57
|
-
params[:key_schema] = @key_schema # required for create action
|
|
58
|
-
# hardcode to ALL for now
|
|
59
|
-
params[:projection] = { # required
|
|
60
|
-
projection_type: "ALL", # accepts ALL, KEYS_ONLY, INCLUDE
|
|
61
|
-
# non_key_attributes: ["NonKeyAttributeName"],
|
|
62
|
-
}
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
if self.is_a?(GlobalSecondaryIndex) && [:create, :update].include?(@action)
|
|
66
|
-
# provisioned_throughput is required for gsi index definition
|
|
67
|
-
params[:provisioned_throughput] = @provisioned_throughput
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
params
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
class Dynomite::Migration
|
|
2
|
-
class Executor
|
|
3
|
-
include Dynomite::DbConfig
|
|
4
|
-
|
|
5
|
-
# Examples:
|
|
6
|
-
# Executor.new(:create_table, params) or
|
|
7
|
-
# Executor.new(:update_table, params)
|
|
8
|
-
#
|
|
9
|
-
# The params are generated frmo the dsl.params
|
|
10
|
-
attr_accessor :table_name
|
|
11
|
-
def initialize(table_name, method_name, params)
|
|
12
|
-
@table_name = table_name
|
|
13
|
-
@method_name = method_name # create_table or update_table
|
|
14
|
-
@params = params
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def run
|
|
18
|
-
begin
|
|
19
|
-
# Examples:
|
|
20
|
-
# result = db.create_table(@params)
|
|
21
|
-
# result = db.update_table(@params)
|
|
22
|
-
|
|
23
|
-
# Leaving this verbose output in here until this DSL is more hardened to help debug
|
|
24
|
-
unless ENV['DYNOMITE_ENV'] == 'test'
|
|
25
|
-
puts "Calling #{@method_name} with params:"
|
|
26
|
-
pp @params
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
return if ENV['DYNOMITE_DRY'] # dry run flag
|
|
30
|
-
result = db.send(@method_name, @params)
|
|
31
|
-
|
|
32
|
-
puts "DynamoDB Table: #{@table_name} Status: #{result.table_description.table_status}"
|
|
33
|
-
rescue Aws::DynamoDB::Errors::ServiceError => error
|
|
34
|
-
puts "Unable to #{@method_name.to_s.gsub('_',' ')}: #{error.message}".color(:red)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|