stipa 0.2.5 → 0.2.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c13ca91809cf6a4b578b9336b9588f4f544055dab765021a54c822f55281291d
4
- data.tar.gz: ac20150e5e8528532aebe21cf8f1b6354101cf6a92deeb1fe760cd813ef28841
3
+ metadata.gz: 007f691ff0ffe9eda4e751fe7d5839c71eaf1de64fbad49544c0e5e8cfc754df
4
+ data.tar.gz: e5f289efe22da0ec25c7e43c7a622d538de4a87f226b3e282d23b7f68c7bde06
5
5
  SHA512:
6
- metadata.gz: 84e7a0fd600288d87b0ae3c69510028d39d89f4ce2da788624682b39a608b10b2c43fb071cfbbc59f95199c35376cb9acbf32e13d1cf12651fb40d2c39a0cbe0
7
- data.tar.gz: 2097c4e81b7fc64049a4bb073c7f0ddb704c2e0916d2f0254214cfffbe904ad16b10b40ddaa1ecc0d16ed5a02b9cf8576b6fc6da511e96894c2ef2cc87b02b74
6
+ metadata.gz: d750ef8b7affa8b8446a6af38b5be1b11fec7526a7132c78f6857c8da99005c30d2811b378e77fe40b5168108b48e1bbe988362abc186f7eabc762b1887e0af5
7
+ data.tar.gz: 2f5994e2de25d2d2c0f5cd7c1f2561e3f0e1b597891585afb97d5f955edf5002f2eead41020564d0c8f6039a76e066ba60a513d0769db4c9ae2ae10b7d98a6b9
data/README.md CHANGED
@@ -430,13 +430,19 @@ result[:records] # => [#<User>, ...]
430
430
  result[:total] # => 150
431
431
  result[:total_pages] # => 15
432
432
 
433
- # Soft delete
433
+ # Soft delete (requires a `deleted_at` column)
434
434
  user.soft_delete
435
435
  user.deleted? # => true
436
- User.all # => excludes soft-deleted
437
- User.with_deleted # => includes all
438
- User.only_deleted # => soft-deleted only
439
436
  user.restore
437
+
438
+ # Scopes
439
+ User.dataset.deleted # => WHERE (deleted_at IS NOT NULL)
440
+ User.dataset.not_deleted # => WHERE (deleted_at IS NULL)
441
+
442
+ # To exclude soft-deleted records by default, override dataset:
443
+ # def self.dataset
444
+ # super.not_deleted
445
+ # end
440
446
  ```
441
447
 
442
448
  ---
@@ -1,5 +1,35 @@
1
1
  module Stipa
2
2
  module Model
3
+ # Soft delete support for Sequel models.
4
+ #
5
+ # Provides `soft_delete`, `restore`, and `deleted?` instance methods,
6
+ # plus `deleted` and `not_deleted` dataset scopes.
7
+ #
8
+ # Your table must have a nullable `deleted_at` timestamp column.
9
+ #
10
+ # # db/migrate/001_create_posts.rb
11
+ # create_table :posts do
12
+ # primary_key :id
13
+ # DateTime :deleted_at
14
+ # # ...
15
+ # end
16
+ #
17
+ # ==== Opt into the default scope
18
+ #
19
+ # By default, soft-deleted rows are NOT filtered from queries.
20
+ # To exclude them automatically, override `dataset` in your model:
21
+ #
22
+ # class Post < ApplicationModel
23
+ # def self.dataset
24
+ # super.not_deleted
25
+ # end
26
+ # end
27
+ #
28
+ # Post.where(title: "foo") # => WHERE (deleted_at IS NULL) AND (title = 'foo')
29
+ #
30
+ # Without the override, include records as usual:
31
+ #
32
+ # Post.where(title: "foo") # => WHERE (title = 'foo')
3
33
  module SoftDelete
4
34
  def self.included(base)
5
35
  base.instance_eval do
@@ -12,21 +42,25 @@ module Stipa
12
42
  where(deleted_at: nil)
13
43
  end
14
44
  end
15
-
16
- def self.dataset
17
- super.not_deleted
18
- end
19
45
  end
20
46
  end
21
47
 
48
+ # Mark the record as soft-deleted.
49
+ #
50
+ # post.soft_delete # sets deleted_at = now
51
+ # post.soft_delete # no-op (already deleted)
22
52
  def soft_delete
23
53
  update(deleted_at: Time.now.utc)
24
54
  end
25
55
 
56
+ # Restore a soft-deleted record.
57
+ #
58
+ # post.restore # sets deleted_at = nil
26
59
  def restore
27
60
  update(deleted_at: nil)
28
61
  end
29
62
 
63
+ # Returns +true+ if the record has been soft-deleted.
30
64
  def deleted?
31
65
  !deleted_at.nil?
32
66
  end
data/lib/stipa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Stipa
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stipa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jānis Harbs