Giter Site home page Giter Site logo

dalek's Introduction

dalek

The exterminator of application records. #GDPR

The price

Installation

gem install dalek

But not yet! To be uploaded...

Usage

Describing the deletions as a data structure

class DeleteUser < Dalek
  deletion_tree 'User', {
    _before: ->(users) { users.none(&:active?) },
    posts: {
      comments: {commented_posts: :delete},
    },
    comments: :delete,
    avatars: ->(avatars) { avatars.update!(user_id: nil, image: nil) },
  }
end

Extermination

  user = User.find_by doomed: true

  DeleteUser.execute user # => true/false result, paraphrased Ta-da

Related materials

http://nithinbekal.com/posts/ruby-tco/ https://robots.thoughtbot.com/referential-integrity-with-foreign-keys

dalek's People

Contributors

kanevk avatar

Stargazers

Ivailo Hristov avatar

Watchers

James Cloos avatar  avatar

dalek's Issues

Handle has_many :through associations

Extend the deletion tree to find the right scope for has_many :through association.

Example

Model

class User
  has_many :commentators, through: :posts, source: :user
end

Deletion tree

module DeleteUser
  include Dalek::Exterminate

  deletion_tree 'User, {commentators: :delete}
end

Add DSL for the deletion

Add DSL feature for the deleting service.

Currently the deletions are described through the Dalek::Exterminate.deletion_tree method via data structure.

It will be nice to have DSL build over the deletion tree structure.

Example

class DeleteUser
  include Dalek::Exterminate
  
  delete User do
    before { ... }
    
    delete :posts do
      delete :comments

      after { ... }
    end

    delete :comments do
      skip :images
      delete :tags
    end
    
    handle(:avatars) { ... }
  end
end

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.