Sha256: 1e7dd08efc25585ac0ff5965c2e2e9739fedd4f7e630e00b5464d2767136beb4

Contents?: true

Size: 1.49 KB

Versions: 1

Compression:

Stored size: 1.49 KB

Contents

require "mongo"

# typed: false - MongoClient new

# Client to talk to Mongo database
module MongoClient
  class << self
    # @return Client to work with MongoDb
    attr_accessor :client

    def insert(model, data, id)
      collection = MongoClient.client[model]
      collection.insert_one({ id: id, **data })
    end

    def find(model, id)
      find_all(model, { id: id })
    end

    def get_all(model)
      collection = MongoClient.client[model]
      collection.find.collect do |match|
        match.delete("_id")
        match
      end
    end

    def find_all(model, query)
      collection = MongoClient.client[model]
      collection.find(query).collect do |match|
        match.delete("_id")
        match
      end
    end

    def update(model, id, data)
      collection = MongoClient.client[model]
      collection.update_one({ id: id }, { id: id, **data })
    end

    def delete(model, id)
      collection = MongoClient.client[model]
      collection.delete_one({ id: id })
    end
  end
end

MongoClient.client = if ENV["mongo_root_password"]
                       Mongo::Client.new(
                         ["#{ENV["mongodb"]}:27017"],
                         database: "api", password: ENV["mongo_root_password"],
                         user: "root"
                       )
                     else
                       Mongo::Client.new(
                         ["#{ENV["mongodb"]}:27017"],
                         database: "api"
                       )
                     end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
schemaless_rest_api-0.6.0 lib/schemaless_rest_api/mongo_client.rb