Trailblazer macros used across Coditsu ecosystem
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
lib
spec removed unused macros and added better readme Feb 4, 2019
.coditsu.yml macros Jan 21, 2019
.gitignore macros Jan 21, 2019
.rspec macros Jan 21, 2019
.ruby-gemset macros Jan 21, 2019
.ruby-version ruby 2.6.1 Jan 31, 2019
Gemfile
Gemfile.lock
MIT-LICENCE macros Jan 21, 2019
README.md
macros.gemspec fix coditsu url Feb 17, 2019

README.md

Trailblazer Coditsu Macros Engine

CircleCI

Set of macros for nicer composition of Traiblazer operations.

Example:

module Repositories
  class Destroy < ApplicationOperation
    step Macros::Model::Find(Repository, :find_by)
    step Macros::Model::Destroy()
  end
end

Table of Contents

Macros types

There are several types of macros organized in namespaces that can be used to do various things with predefined steps.

Contract macros

  • Macros::Contract::Build - Step for setting contract class and building a new contract
  • Macros::Contract::Persist - Step for contract persistance
  • Macros::Contract::Validate - Step for contract validation
module Organizations
  class New < ApplicationOperation
    contract Contracts::Create

    step Macros::Model::Build(Organization)
    step Macros::Contract::Build()
    step Macros::Contract::Validate(key: :organization)
    step Macros::Contract::Persist()
  end
end

Context macros

  • Macros::Ctx::Assign - Assigns a given class to a ctx key for further usage
class Sources < ApplicationOperation
  # Now under the 'model' within context you'll have the Source class
  step Macros::Ctx::Assign(Source)
  step Macros::Model::Fetch(:eligible_for_gc)
end

Error macros

  • Macros::Error::Raise - If we switched to the left track it will raise with some details for debugging
class Vacuum < ApplicationOperation
  step :setup_tables_names
  step :delete_orphaned_offenses

  # Raise an error if anything goes wrong
  failure Macros::Error::Raise(Errors::OperationFailure)
end

Karafka macros

  • Macros::Karafka::Broadcast - Broadcasts a given context field using a given responder
class Create < ApplicationOperation
  step :model_build
  step :model_persist
  step Macros::Karafka::Broadcast(::Users::CreatedResponder)
end

Model macros

  • Macros::Model::Build - Build step for creating new objects from a class/scope
  • Macros::Model::Destroy - Destroy step for removing object assigned in ctx['model']
  • Macros::Model::Fetch - Extracts from a given object from a ctx hash a given attribute/method and assigns it under diferrent key
  • Macros::Model::Find - Searches on a given scope and assigns result to a ctx hash
  • Macros::Model::Import - Import step for mass data import
  • Macros::Model::Paginate - Runs a pagination for a model and reassigns it under the same name
  • Macros::Model::Persist - Persist step for saving object assigned in ctx['model']
  • Macros::Model::Search - Searches based on current_search data and overwrites our model/resource
module Repositories
  class Destroy < ApplicationOperation
    step Macros::Model::Find(Repository)
    step Macros::Model::Destroy()
  end
end

Params macros

  • Macros::Params::Fetch - Fetches a given param key into the ctx hash for further usage
class ScheduleSync < ApplicationOperation
  step Macros::Params::Fetch(from: :build_token)
  step :find_most_recent_status_for_commit_build
  step :schedule_delayed_job
end

Note on contributions

First, thank you for considering contributing to Coditsu ecosystem! It's people like you that make the open source community such a great community!

Each pull request must pass all the RSpec specs and meet our quality requirements.

To check if everything is as it should be, we use Coditsu that combines multiple linters and code analyzers for both code and documentation. Once you're done with your changes, submit a pull request.

Coditsu will automatically check your work against our quality standards. You can find your commit check results on the builds page of Coditsu organization.

coditsu