cm-action-trail 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: cf963726bc6cc26dcf6c632b42def11bc2fa174047019dfb450d7253a302342b
4
+ data.tar.gz: 71838d3c802ec1223651e187422d09866795929bd8487e350d574a68f4bb5f04
5
+ SHA512:
6
+ metadata.gz: a973c09b6e3e542c8d8726e1ccdaaee503b7b4796982fe90e3e0fac2bed0305df1d7f51780e9bf6a05ae39bbe5367eaa597260036ac0a5e03f856bfe33ad9335
7
+ data.tar.gz: f3030df9dee7411025ea5a3a795d48a2f591b7460794a4fb3a7faa575901054e372aed887a413d32324748d96635470185b30b037ef6ceda2c94afc71f0721e8
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # CmAdmin
2
+
3
+ An action logger gem for Ruby on Rails application.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'cm-action-trail'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle install
16
+
17
+ ## Usage
18
+
19
+ Copy the migration
20
+
21
+ $ rails cm_action_trail:install:migrations
22
+
23
+ Include inside the model
24
+
25
+ has_action_trail
26
+
27
+ In application.rb
28
+
29
+ require 'cm-action-trail'
30
+
31
+ ## Contributing
32
+
33
+ Bug reports and pull requests are welcome on [GitHub](https://github.com/commutatus/cm-action-trail).
@@ -0,0 +1,16 @@
1
+ class ActionTrail < ApplicationRecord
2
+
3
+ belongs_to :entity, polymorphic: true
4
+ belongs_to :actor, foreign_key: 'actor_id', class_name: 'User', optional: true
5
+
6
+ enum trail_type: { created: 0, updated: 1, deleted: 2 }
7
+
8
+ def create_notification(notify_content, receiver)
9
+ notifications.create(
10
+ notification_content: notify_content,
11
+ sender_id: self.actor_id,
12
+ notifiable: self.entity,
13
+ receiver: receiver
14
+ )
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ class CreateActionTrails < ActiveRecord::Migration[6.1]
2
+ def change
3
+ create_table :action_trails do |t|
4
+ t.string :entity_type
5
+ t.integer :entity_id
6
+ t.integer :trail_type
7
+ t.string :event_name, null: false
8
+ t.integer :actor_id
9
+ t.jsonb :entity_changes
10
+
11
+ t.timestamps
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,40 @@
1
+ module CmActionTrail::Core
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ attr_accessor :current_action_name
6
+
7
+ after_commit :register_event
8
+
9
+ before_save {|record|
10
+ if record.current_action_name.nil?
11
+ record.current_action_name = record.new_record? ? 'created' : 'updated'
12
+ end
13
+ }
14
+ before_destroy {|record| record.current_action_name = 'destroyed'}
15
+
16
+ has_many :action_trails, as: :entity
17
+
18
+ end
19
+
20
+ def check_trail_type
21
+ if self.new_record?
22
+ :created
23
+ elsif self.destroyed?
24
+ :deleted
25
+ else
26
+ :updated
27
+ end
28
+ end
29
+
30
+ def register_event
31
+ trail_type = check_trail_type
32
+ ::ActionTrail.create(
33
+ entity: self,
34
+ trail_type: trail_type,
35
+ event_name: self.current_action_name,
36
+ actor_id: Current.user&.id,
37
+ entity_changes: saved_changes.except(:updated_at)
38
+ )
39
+ end
40
+ end
@@ -0,0 +1,5 @@
1
+ module CmActionTrail
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace CmActionTrail
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ module CmActionTrail
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,13 @@
1
+ require 'cm-action-trail/version'
2
+ require 'cm-action-trail/engine'
3
+ require 'cm-action-trail/core'
4
+
5
+ module CmActionTrail
6
+ def has_action_trail
7
+ include CmActionTrail::Core
8
+ end
9
+ end
10
+
11
+ ActiveSupport.on_load(:active_record) do
12
+ ActiveRecord::Base.extend CmActionTrail
13
+ end
metadata ADDED
@@ -0,0 +1,51 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cm-action-trail
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - anbublacky
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-04-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Description of Cm::ActionTrail.
14
+ email:
15
+ - anbublacky@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - README.md
21
+ - app/models/action_trail.rb
22
+ - db/migrate/20220302120216_create_action_trails.rb
23
+ - lib/cm-action-trail.rb
24
+ - lib/cm-action-trail/core.rb
25
+ - lib/cm-action-trail/engine.rb
26
+ - lib/cm-action-trail/version.rb
27
+ homepage: https://github.com/commutatus/cm-action-trail
28
+ licenses:
29
+ - MIT
30
+ metadata:
31
+ homepage_uri: https://github.com/commutatus/cm-action-trail
32
+ post_install_message:
33
+ rdoc_options: []
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ required_rubygems_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ requirements: []
47
+ rubygems_version: 3.2.3
48
+ signing_key:
49
+ specification_version: 4
50
+ summary: Summary of Cm::ActionTrail.
51
+ test_files: []