Sha256: f18389125b4b9e0b1c938f024988f702ff284b7b8fdd6a93d17a26e98eb4dc41

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

module Tads6Mariana
  class ORM
  def self.criar(*atributos)
    id = proximo_id
    File.open("#{path}/#{id}.yml", "a") do |arquivo|
      obj = self.new atributos
      obj.id = id
      arquivo.puts YAML.dump obj
      return id
    end
  end

  def self.listar
    @objs = []
    $/ = '\n\n'

    (1..ultimo_id).each do |id|
      _path = "#{path}/#{id}.yml"
      if File.exist?(_path)
        File.open(_path, "r").each do |obj|
          @objs << YAML.load(obj)
        end
      end
    end

    @objs
  end

  def self.selecionar(id)
    listar.each do |obj|
      return obj if obj.id == id
    end
  end

  def self.atualizar(obj)
    FileUtils.rm "#{path}/#{obj.id}.yml"
    File.open("#{path}/#{obj.id}.yml", "a") do |arquivo|
      arquivo.puts YAML.dump obj
      return obj.id
    end
  end

  def self.remove(id)
    FileUtils.rm "#{path}/#{id}.yml"
    return id
  end

  private

  def self.quantidade_registros
    Dir.glob("#{path}/*.yml").size + 1
  end

  def self.ultimo_id
    files = Dir.entries("#{path}").sort_by do |file|
      File.ctime("#{path}/#{file}")
    end
    File.basename("#{path}/#{files.last}", ".yml").to_i
  end

  def self.path
    "db/#{self.to_s.downcase}"
  end

  def self.proximo_id
    ultimo_id.to_i + 1
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tads6_mariana-0.3.0 lib/tads6_mariana/orm.rb