datetime_writer.hpp 791 Bytes
Newer Older
louiz’'s avatar
louiz’ committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
#pragma once

#include <utils/datetime.hpp>
#include <database/engine.hpp>

#include <logger/logger.hpp>
#include <database/postgresql_engine.hpp>
#include <database/sqlite3_engine.hpp>

class DatetimeWriter
{
public:
  DatetimeWriter(DateTime datetime, const DatabaseEngine& engine):
      datetime(datetime),
      engine(engine)
  {}

  long double get_value() const
  {
    const long double epoch_duration = this->datetime.epoch().count();
    const long double epoch_seconds = epoch_duration / std::chrono::system_clock::period::den;
    return this->engine.epoch_to_floating_value(epoch_seconds);
  }
  std::string escape_param_number(int value) const
  {
    return this->engine.escape_param_number(value);
  }

private:
  const DateTime datetime;
  const DatabaseEngine& engine;
};