web47core 3.2.4 → 3.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 +4 -4
- data/lib/app/models/command_job.rb +12 -6
- data/lib/app/models/concerns/archive_able.rb +93 -0
- data/lib/web47core/version.rb +1 -1
- data/lib/web47core.rb +1 -0
- metadata +31 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09bd1177ff541dc974ea27c1208e06c43be1056962384b6250e52bfc2938fd6b'
|
4
|
+
data.tar.gz: 119fcf27352d87d96ef84328e24cc7adbf6cbe1e18363a2535826e5bb5c3a90d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 38926fb70d61e60d8633fcd89e58d2a5e66dca47ac9245eeb31c3de8264917e547d13740819df61850805a06631b69b22929643310feb0a9458fbd893881d9cf
|
7
|
+
data.tar.gz: 061e7c166c012d860b4c66521c2d178943197a1384c0f195ea331d13087b0a0801def262f28b85083c149388368d273cf04adf303632dcc8913b98c798ff036c
|
@@ -37,16 +37,22 @@ class CommandJob
|
|
37
37
|
#
|
38
38
|
validates :state, inclusion: { in: ALL_STATES }
|
39
39
|
|
40
|
-
#
|
41
|
-
#
|
42
|
-
|
40
|
+
# @abstract duration for the job
|
41
|
+
# @return Integer - How long this job took in milliseconds
|
42
|
+
def duration
|
43
|
+
finished_at - started_at
|
44
|
+
rescue StandardError
|
45
|
+
0
|
46
|
+
end
|
47
|
+
|
48
|
+
# @abstract Who started this job
|
49
|
+
# @return String - Who started this job if present, otherwise `System`
|
43
50
|
def display_started_by
|
44
51
|
started_by.present? ? started_by.name : 'System'
|
45
52
|
end
|
46
53
|
|
47
|
-
#
|
48
|
-
#
|
49
|
-
#
|
54
|
+
# @abstract Default time to keep a job before auto archiving it
|
55
|
+
# @return Integer - TTL for this job
|
50
56
|
def ttl
|
51
57
|
30
|
52
58
|
end
|
@@ -0,0 +1,93 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#
|
4
|
+
# A module that allows for trash/recycling of an object
|
5
|
+
# it will be deleted in the app, but remain in the database until permanently deleted
|
6
|
+
#
|
7
|
+
module ArchiveAble
|
8
|
+
extend ActiveSupport::Concern
|
9
|
+
|
10
|
+
def self.included(base)
|
11
|
+
base.class_eval do
|
12
|
+
# Fields
|
13
|
+
field :archived, type: Mongoid::Boolean, default: false
|
14
|
+
field :archived_at, type: Time
|
15
|
+
field :archived_by_name, type: String
|
16
|
+
field :archived_by_email, type: String
|
17
|
+
field :restored_at, type: Time
|
18
|
+
field :restored_by_name, type: String
|
19
|
+
field :restored_by_email, type: String
|
20
|
+
# Relationships
|
21
|
+
belongs_to :archived_by, polymorphic: true, optional: true, inverse_of: nil
|
22
|
+
belongs_to :restored_by, polymorphic: true, optional: true, inverse_of: nil
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# @abstract Display who archived this object
|
27
|
+
# @return String
|
28
|
+
def display_archived_by
|
29
|
+
if archived_by.present?
|
30
|
+
archived_by.display_name
|
31
|
+
elsif archived_by_email.present?
|
32
|
+
"#{archived_by_name} (#{archived_by_email})"
|
33
|
+
else
|
34
|
+
archived_by_name
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# @abstract Display who restored this object
|
39
|
+
# @return String
|
40
|
+
def display_restored_by
|
41
|
+
if restored_by.present?
|
42
|
+
restored_by.display_name
|
43
|
+
elsif restored_by_email.present?
|
44
|
+
"#{restored_by_name} (#{restored_by_email})"
|
45
|
+
else
|
46
|
+
restored_by_name
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def unarchived?
|
51
|
+
!archived?
|
52
|
+
end
|
53
|
+
|
54
|
+
# @abstract Archive the object
|
55
|
+
# @param [Member|User] actor - the thing performing the action
|
56
|
+
def archive(actor)
|
57
|
+
params = if actor.is_a? Cron::Job
|
58
|
+
{ archived: true,
|
59
|
+
archived_at: Time.now.utc,
|
60
|
+
archived_by_name: "System - #{actor.class.name}" }
|
61
|
+
else
|
62
|
+
{ archived: true,
|
63
|
+
archived_by: actor,
|
64
|
+
archived_at: Time.now.utc,
|
65
|
+
archived_by_name: actor.name,
|
66
|
+
archived_by_email: actor.email }
|
67
|
+
end
|
68
|
+
params[:name] = "#{name}-(archived at #{Time.now.utc})" if respond_to?(:name=)
|
69
|
+
update params
|
70
|
+
end
|
71
|
+
|
72
|
+
# @abstract recycle the object
|
73
|
+
# @param [Member|User] actor - the actor performing the action
|
74
|
+
def restore(actor)
|
75
|
+
params = { archived: false,
|
76
|
+
restored_by: actor,
|
77
|
+
restored_at: Time.now.utc,
|
78
|
+
restored_by_name: actor.name,
|
79
|
+
restored_by_email: actor.email }
|
80
|
+
params[:name] = name.split('-(archived at').first if respond_to?(:name=)
|
81
|
+
update params
|
82
|
+
end
|
83
|
+
|
84
|
+
def days_to_deletion
|
85
|
+
archived? ? ((archived_at + retention_days.days - Time.now.utc) / 86_400).to_i : 0
|
86
|
+
rescue StandardError
|
87
|
+
archived? ? retention_days : 0
|
88
|
+
end
|
89
|
+
|
90
|
+
def retention_days
|
91
|
+
30
|
92
|
+
end
|
93
|
+
end
|
data/lib/web47core/version.rb
CHANGED
data/lib/web47core.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'web47core/config'
|
2
2
|
require 'app/models/concerns/app47_logger'
|
3
3
|
require 'app/models/concerns/api_tokenable'
|
4
|
+
require 'app/models/concerns/archive_able'
|
4
5
|
require 'app/models/concerns/aws_configuration'
|
5
6
|
require 'app/models/concerns/core_system_configuration'
|
6
7
|
require 'app/models/concerns/core_account'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web47core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Schroeder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-11
|
11
|
+
date: 2024-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -164,20 +164,6 @@ dependencies:
|
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '9.0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: rails
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 7.2.2
|
174
|
-
type: :runtime
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 7.2.2
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: railties
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,20 +220,6 @@ dependencies:
|
|
234
220
|
- - ">="
|
235
221
|
- !ruby/object:Gem::Version
|
236
222
|
version: '0'
|
237
|
-
- !ruby/object:Gem::Dependency
|
238
|
-
name: sass-rails
|
239
|
-
requirement: !ruby/object:Gem::Requirement
|
240
|
-
requirements:
|
241
|
-
- - ">="
|
242
|
-
- !ruby/object:Gem::Version
|
243
|
-
version: '0'
|
244
|
-
type: :runtime
|
245
|
-
prerelease: false
|
246
|
-
version_requirements: !ruby/object:Gem::Requirement
|
247
|
-
requirements:
|
248
|
-
- - ">="
|
249
|
-
- !ruby/object:Gem::Version
|
250
|
-
version: '0'
|
251
223
|
- !ruby/object:Gem::Dependency
|
252
224
|
name: twilio-ruby
|
253
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -444,6 +416,34 @@ dependencies:
|
|
444
416
|
- - ">="
|
445
417
|
- !ruby/object:Gem::Version
|
446
418
|
version: '0'
|
419
|
+
- !ruby/object:Gem::Dependency
|
420
|
+
name: rails
|
421
|
+
requirement: !ruby/object:Gem::Requirement
|
422
|
+
requirements:
|
423
|
+
- - "~>"
|
424
|
+
- !ruby/object:Gem::Version
|
425
|
+
version: 7.2.2
|
426
|
+
type: :development
|
427
|
+
prerelease: false
|
428
|
+
version_requirements: !ruby/object:Gem::Requirement
|
429
|
+
requirements:
|
430
|
+
- - "~>"
|
431
|
+
- !ruby/object:Gem::Version
|
432
|
+
version: 7.2.2
|
433
|
+
- !ruby/object:Gem::Dependency
|
434
|
+
name: sass-rails
|
435
|
+
requirement: !ruby/object:Gem::Requirement
|
436
|
+
requirements:
|
437
|
+
- - ">="
|
438
|
+
- !ruby/object:Gem::Version
|
439
|
+
version: '0'
|
440
|
+
type: :development
|
441
|
+
prerelease: false
|
442
|
+
version_requirements: !ruby/object:Gem::Requirement
|
443
|
+
requirements:
|
444
|
+
- - ">="
|
445
|
+
- !ruby/object:Gem::Version
|
446
|
+
version: '0'
|
447
447
|
- !ruby/object:Gem::Dependency
|
448
448
|
name: shoulda
|
449
449
|
requirement: !ruby/object:Gem::Requirement
|
@@ -645,6 +645,7 @@ files:
|
|
645
645
|
- lib/app/models/command_job_log.rb
|
646
646
|
- lib/app/models/concerns/api_tokenable.rb
|
647
647
|
- lib/app/models/concerns/app47_logger.rb
|
648
|
+
- lib/app/models/concerns/archive_able.rb
|
648
649
|
- lib/app/models/concerns/aws_configuration.rb
|
649
650
|
- lib/app/models/concerns/cdn_url.rb
|
650
651
|
- lib/app/models/concerns/cipher_able.rb
|