Sha256: 1a576c2e80e5ea8fe85e49daf559dcd8115d5524a522a623364d6d8a3b1300e6

Contents?: true

Size: 1.28 KB

Versions: 1

Compression:

Stored size: 1.28 KB

Contents

module Frisky
  module Model
    class Event
      include MongoMapper::Document

      key :type, String
      key :public, Boolean
      key :payload, Hash
      key :repository_id, ObjectId
      key :actor_id, ObjectId
      key :commit_ids, Array, default: nil
      key :ref, String
      key :head, String
      key :created_at, String

      belongs_to :actor, class_name: 'Frisky::Model::Person'
      belongs_to :repository, class_name: 'Frisky::Model::Repository'

      many :commits, in: :commit_ids, class_name: 'Frisky::Model::Commit'

      def self.load_from_hashie(hashie)
        e = Event.find(hashie.id)
        e.actor = Person.find(e.actor_id)
        e.repository = Repository.find(e.repository_id)
        e.commits = e.commit_ids.map {|id| Commit.find(id) }
        e
      end

      def serialize
        # Save all related
        self.actor.save!
        self.repository.save!
        self.commit_ids ||= []
        self.commits.each {|c| c.save!; self.commit_ids << c._id unless self.commit_ids.include? c._id }

        self.actor_id = self.actor.id
        self.repository_id = self.repository.id

        self.save!

        self.to_json
      end

      def self.exists?(raw)
        self.collection.find_one(type: raw.type, _id: raw.id) != nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
frisky_mongo-0.7.7 lib/frisky-mongo/models/event.rb