web-connect 0.1.10 → 0.2.0

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: b297a57d736e3dc2860b710c3fb2d53f9e962841
4
- data.tar.gz: 20e06cbe434da29e8cba8171fd7a018f1e3c7f64
3
+ metadata.gz: 0a9ed1943020c61d303c0e1e41d655dbf3becd2e
4
+ data.tar.gz: fd67c5f26c24a6d04e6df66fa5440286791e1b17
5
5
  SHA512:
6
- metadata.gz: 323eb6b99f136b4530bf1804879339a8909b642bf96f06f097231afabcec247c18a2cefe02718a0cc24080d365bf520a5f2d0454dc0a71a4ce64aab0d023d51e
7
- data.tar.gz: f054a41d4dc3b02f4a22a8447320c3d111e83274172671c6e0d918c149e479af78ea9ac7f14f478c65c29ec49e59de09dfaaa03154b8b1140cea3d5afe74642d
6
+ metadata.gz: 61adc8afbf05c6d19b0d52922179bbf52c26ec1f9df200bcfaaaa4cf963857d1ad6359db07a0200aa0cf55d513469ae753b49ac2038e531711dad9240e7651a7
7
+ data.tar.gz: c3d75c7a605e8ce13acd1deaace6c1a026191fa525481cb73e3ad8f07c34736fd521c488317c573f49a77cbd3f41a03097d10430acb4c87234e7078ec1477011
@@ -65,6 +65,10 @@ module Netfira
65
65
  @config.session_lifetime
66
66
  end
67
67
 
68
+ def self.paranoia?
69
+ !!@config.paranoia
70
+ end
71
+
68
72
  private
69
73
 
70
74
  def self.null_logger
@@ -2,7 +2,7 @@ module Netfira::WebConnect
2
2
  class Configuration
3
3
 
4
4
  attr_accessor :db_table_prefix, :file_store, :authenticator, :custom_fields,
5
- :time_zone, :materialize_when_db_changed, :session_lifetime
5
+ :time_zone, :materialize_when_db_changed, :session_lifetime, :paranoia
6
6
 
7
7
  attr_reader :logger, :db
8
8
 
@@ -4,7 +4,7 @@ class Support < Netfira::WebConnect::Migration
4
4
  def change
5
5
 
6
6
  create_table :_tables do |t|
7
- t.string :name, limit: 50, indexed: true
7
+ t.string :name, limit: 50, index: true
8
8
  t.string :origin_key, limit: 20
9
9
  t.boolean :file
10
10
  t.boolean :writable
@@ -19,7 +19,7 @@ class Support < Netfira::WebConnect::Migration
19
19
  Netfira::WebConnect::Models::Shop.create id: 0
20
20
 
21
21
  create_table :_settings do |t|
22
- t.references :shop
22
+ t.references :shop, index: true
23
23
  t.string :key
24
24
  t.binary :value, limit: 0x10000
25
25
  t.string :content_type
@@ -31,6 +31,8 @@ class Support < Netfira::WebConnect::Migration
31
31
  t.references :record
32
32
  t.string :key
33
33
  t.binary :value, limit: 0x10000
34
+ t.index [:shop_id, :table_id, :record_id], name: 'index_custom_fields'
35
+ t.index [:shop_id, :table_id, :record_id, :key], name: 'index_custom_fields_with_keys', unique: true
34
36
  end
35
37
 
36
38
  create_table :_sessions do |t|
@@ -22,13 +22,15 @@ module Netfira::WebConnect
22
22
  create_table table_name, options do |t|
23
23
  t.string options[:origin_key] || :"#{table_name.to_s.singularize}_id", index: true unless options[:writable]
24
24
  yield t
25
- t.references :shop
25
+ t.references :shop, index: true
26
26
  if options[:sendable]
27
27
  t.binary :guid, index: true
28
28
  t.integer :delivery_status, default: 0, limit: 3, index: true
29
29
  end
30
30
  t.binary :digest, limit: 16
31
31
  t.timestamps
32
+ t.datetime :deleted_at
33
+ t.index :deleted_at
32
34
  end
33
35
  if @l10n_buffer
34
36
  create_l10n_table table_name do |t|
@@ -50,7 +52,7 @@ module Netfira::WebConnect
50
52
 
51
53
  def create_file_table(table_name)
52
54
  create_table table_name do |t|
53
- t.references :shop
55
+ t.references :shop, index: true
54
56
  t.string :file_name, index: true
55
57
  t.string :remote_location
56
58
  t.string :locale
@@ -59,6 +61,8 @@ module Netfira::WebConnect
59
61
  t.binary :checksum, limit: 16
60
62
  t.binary :digest, limit: 16
61
63
  t.timestamps
64
+ t.datetime :deleted_at
65
+ t.index :deleted_at
62
66
  end
63
67
  add_table_def table_name, {}, true
64
68
  end
@@ -67,6 +71,9 @@ module Netfira::WebConnect
67
71
  first, second = [first, second].sort
68
72
  create_table :"#{first}_to_#{second}" do |t|
69
73
  t.references first.to_s.singularize, second.to_s.singularize, index: true
74
+ t.timestamps
75
+ t.datetime :deleted_at
76
+ t.index :deleted_at
70
77
  end
71
78
  end
72
79
 
@@ -1,3 +1,5 @@
1
+ require 'paranoia'
2
+
1
3
  module Netfira::WebConnect
2
4
  class Model::Record
3
5
  module Materialization
@@ -46,6 +48,9 @@ module Netfira::WebConnect
46
48
  # Set up sendable behaviour
47
49
  klass.include Model::Record::Sendable if klass.sendable?
48
50
 
51
+ # Set up paranoia (soft deletion)
52
+ klass.acts_as_paranoid if Netfira::WebConnect.paranoia?
53
+
49
54
  # Set up file record behaviour
50
55
  if klass.has_file?
51
56
  klass.has_attached_file :attachment, Netfira::WebConnect.file_store
@@ -6,7 +6,7 @@ module Netfira::WebConnect
6
6
  module Serializer
7
7
  extend ActiveSupport::Concern
8
8
 
9
- EXCLUDE_FROM_SERIALIZE = %w[id shop_id digest delivery_status created_at updated_at]
9
+ EXCLUDE_FROM_SERIALIZE = %w[id shop_id digest delivery_status created_at updated_at deleted_at]
10
10
 
11
11
  included do
12
12
 
@@ -25,6 +25,8 @@ module Netfira::WebConnect
25
25
  owner_class.has_many :translation_models,
26
26
  class_name: klass.name,
27
27
  inverse_of: :owner,
28
+ # TODO: cleanup on `really_destroy!`
29
+ dependent: Netfira::WebConnect.paranoia? ? nil : :delete_all,
28
30
  autosave: true
29
31
 
30
32
  # Add translations to the default scope, as they will almost
@@ -12,6 +12,7 @@ module Netfira::WebConnect
12
12
  klass = Class.new(self)
13
13
  Models.const_set "#{name_a}To#{name_b}", klass
14
14
  klass.related_classes = [name_a, name_b].map{ |n| Models.const_get n.camelize.singularize }
15
+ klass.acts_as_paranoid if Netfira::WebConnect.paranoia?
15
16
  end
16
17
 
17
18
  def related_classes=(classes)
@@ -63,6 +64,7 @@ module Netfira::WebConnect
63
64
  end
64
65
 
65
66
  def records
67
+ self.class.current_scope = nil if Netfira::WebConnect.paranoia? # Fixes a bug triggered by paranoia
66
68
  self.class.related_classes.map{ |klass| __send__ klass.single_name.to_sym }
67
69
  end
68
70
 
@@ -1,5 +1,5 @@
1
1
  module Netfira
2
2
  module WebConnect
3
- VERSION = '0.1.10'
3
+ VERSION = '0.2.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web-connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neil E. Pearson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-25 00:00:00.000000000 Z
12
+ date: 2014-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -82,75 +82,19 @@ dependencies:
82
82
  - !ruby/object:Gem::Version
83
83
  version: '1.6'
84
84
  - !ruby/object:Gem::Dependency
85
- name: rspec
85
+ name: paranoia
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 3.0.0.beta2
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: 3.0.0.beta2
98
- - !ruby/object:Gem::Dependency
99
- name: sqlite3
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '1.3'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '1.3'
112
- - !ruby/object:Gem::Dependency
113
- name: rspec-its
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '1.0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '1.0'
126
- - !ruby/object:Gem::Dependency
127
- name: mime-types
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '1.16'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '1.16'
140
- - !ruby/object:Gem::Dependency
141
- name: database_cleaner
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - "~>"
145
- - !ruby/object:Gem::Version
146
- version: '1.3'
147
- type: :development
90
+ version: '2.0'
91
+ type: :runtime
148
92
  prerelease: false
149
93
  version_requirements: !ruby/object:Gem::Requirement
150
94
  requirements:
151
95
  - - "~>"
152
96
  - !ruby/object:Gem::Version
153
- version: '1.3'
97
+ version: '2.0'
154
98
  description: |
155
99
  This is a Ruby version of Netfira's WebConnect server-side library
156
100
  email: