Sha256: 81a39e0dc9b206dc2896e3667d48e848f4350aeb19c08d115ad463b050fbc972

Contents?: true

Size: 1.71 KB

Versions: 2

Compression:

Stored size: 1.71 KB

Contents

class DBUniversity
  # @@ - кринж, так как если данный класс будет наследовать, то переменная класса переопределится с таким же значением
  private_class_method :new
  # Создаем мьютекс для синхронизации доступа к переменной @instance он позволяет "захватить" доступ к общему ресурсу,
  # чтобы другие потоки не могли получить доступ к защищенному коду, пока мьютекс не будет освобожден.
  @instance_mutex = Mutex.new

  # Инициализируем объект, открывая БД и настраивая её на возвращение результатов в виде хешей
  def initialize
    @client = SQLite3::Database.open 'C:\Users\valen\RubymineProjects\untitled\identifier.sqlite'
    @client.results_as_hash = true
  end


  # Метод, возвращает ЕДИНСТВЕННЫЙ экземпляр класса DBUniversity.
  def self.instance
    return @instance if @instance

    # Иначе захватываем мьютекс, чтобы ТОЛЬКО ОДИН поток мог создать экземпляр класса.
    @instance_mutex.synchronize do
      @instance ||= new
    end
    @instance
  end

  # Методы, принимают SQL-запрос (и параметры), возвращает результаты запроса.
  def prepare_exec(statement, *params)
    @client.prepare(statement).execute(*params)
  end

  def query(statement)
    @client.query(statement)
  end


end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rafmycat-1.0.1 lib/source/DBUniversity.rb
rafmycat-1.0.0 lib/source/DBUniversity.rb