From 5378ffd0aca410c50887fee57899776e62bfb766 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 8 Aug 2021 12:48:37 +0100 Subject: Extract WritePqCopyStrm into its own file --- lib/output/pq/writePqCopyStrm.cpp | 82 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 lib/output/pq/writePqCopyStrm.cpp (limited to 'lib/output/pq/writePqCopyStrm.cpp') diff --git a/lib/output/pq/writePqCopyStrm.cpp b/lib/output/pq/writePqCopyStrm.cpp new file mode 100644 index 0000000..dd402e7 --- /dev/null +++ b/lib/output/pq/writePqCopyStrm.cpp @@ -0,0 +1,82 @@ +#include "writePqCopyStrm.h" +#include + +namespace MyGrate::Output::Pq { + + WritePqCopyStream::WritePqCopyStream(FILE * o) : out {o} { } + + void + WritePqCopyStream::nextRecord() + { + fputc('\n', out); + } + + void + WritePqCopyStream::nextField() + { + fputc('\t', out); + } + + void WritePqCopyStream::operator()(std::nullptr_t) const + { + fputs("\\N", out); + } + + void WritePqCopyStream::operator()(timespec) const + { + throw std::logic_error("timespec not implemented"); + } + + void + WritePqCopyStream::operator()(Date v) const + { + fprintf(out, "%d-%d-%d", v.year, v.month, v.day); + } + + void + WritePqCopyStream::operator()(Time v) const + { + fprintf(out, "%d:%d:%d", v.hour, v.minute, v.second); + } + + void + WritePqCopyStream::operator()(DateTime v) const + { + operator()(static_cast(v)); + fputc('T', out); + operator()(static_cast