diff --git a/csv_writer.go b/csv_writer.go index 82d8cf2..570df19 100644 --- a/csv_writer.go +++ b/csv_writer.go @@ -5,6 +5,7 @@ import ( "strings" ) +// CsvWriter writes data in csv format using FileWriter type CsvWriter struct { fw FileWriter dstFile string @@ -12,6 +13,7 @@ type CsvWriter struct { delimiter string } +// NewCsvWriter builds new CsvWriter func NewCsvWriter(fw FileWriter, dstFile, dstDir, delimiter string) *CsvWriter { return &CsvWriter{ fw, @@ -21,10 +23,12 @@ func NewCsvWriter(fw FileWriter, dstFile, dstDir, delimiter string) *CsvWriter { } } +// WriteDDL is part of interface. It is not usefull for csv. func (w *CsvWriter) WriteDDL(tableName string, ddl string) (err error) { return } +// WriteRows writes result rows in csv format func (w *CsvWriter) WriteRows(tableName string, columns []string, rows []*map[string]interface{}) (err error) { f, err := w.fw.getFileHandler(w.getFilename(tableName)) if err != nil { diff --git a/filewriter.go b/filewriter.go index f58a2ce..fa7534c 100644 --- a/filewriter.go +++ b/filewriter.go @@ -5,19 +5,23 @@ import ( "os" ) +// File is interface which can writes strings to file type File interface { WriteString(s string) (n int, err error) Close() error } +// FileWriter is interface which can instantiate File type FileWriter interface { getFileHandler(filename string) (File, error) } +// FileWriter writes files using filesystem and methods from OS type OsFileWriter struct { openFiles map[string]bool } +// NewOsFileWriter builds new OsFileWriter func NewOsFileWriter() *OsFileWriter { return &OsFileWriter{ make(map[string]bool, 0), diff --git a/query.go b/query.go index d449c4e..930c61b 100644 --- a/query.go +++ b/query.go @@ -37,6 +37,7 @@ type ConnectionSettings struct { dbhost string } +// TableColumnDDL represents result row from DESCRIBE command type TableColumnDDL struct { Field string `db:"Field"` Type string `db:"Type"` @@ -46,6 +47,7 @@ type TableColumnDDL struct { Extra string `db:"Extra"` } +// Result contains DDL and rows which were got from DB type Result struct { DDL *map[string]string Rows *map[string]([]*map[string]interface{}) diff --git a/run.go b/run.go index efec7d7..67f4d3d 100644 --- a/run.go +++ b/run.go @@ -6,6 +6,7 @@ import ( "os" ) +// Run is entry point for application func Run(dbConnect dbConnector, argsTail []string, configFile string, format string, fw FileWriter, dstFile string, dstDir string, csvDelimiter string) (err error) { if len(argsTail) != 2 && len(argsTail) != 3 { showHelp() diff --git a/sql_writer.go b/sql_writer.go index 0afc79f..bfa1818 100644 --- a/sql_writer.go +++ b/sql_writer.go @@ -5,12 +5,14 @@ import ( "strings" ) +// SqlWriter writes data in sql format using FileWriter type SqlWriter struct { fw FileWriter dstFile string dstDir string } +// NewSqlWriter builds new SqlWriter func NewSqlWriter(fw FileWriter, dstFile, dstDir string) *SqlWriter { return &SqlWriter{ fw, @@ -19,6 +21,7 @@ func NewSqlWriter(fw FileWriter, dstFile, dstDir string) *SqlWriter { } } +// WriteDDL writes SQL-query which creates tables - DDL func (w *SqlWriter) WriteDDL(tableName string, ddl string) (err error) { contents := "SET FOREIGN_KEY_CHECKS=0;\n" contents += ddl + "\n" @@ -35,6 +38,7 @@ func (w *SqlWriter) WriteDDL(tableName string, ddl string) (err error) { return } +// WriteRows writes result rows in sql-insert format func (w *SqlWriter) WriteRows(tableName string, columns []string, rows []*map[string]interface{}) (err error) { f, err := w.fw.getFileHandler(w.getFilename(tableName)) if err != nil { diff --git a/writer.go b/writer.go index 3688dd6..54b0e31 100644 --- a/writer.go +++ b/writer.go @@ -4,14 +4,17 @@ import ( "fmt" ) +// DataWriter is interface which can write result somewhere type DataWriter interface { WriteRows(tableName string, columns []string, results []*map[string]interface{}) (err error) WriteDDL(tableName string, ddl string) (err error) } +// SimpleWriter writes result into stdout using simple format (concatinated values) type SimpleWriter struct { } +// WriteRows prints result rows in simple format (concatinated values) into stdout func (w *SimpleWriter) WriteRows(tableName string, _ []string, rows []*map[string]interface{}) (err error) { fmt.Println(tableName) for _, row := range rows { @@ -44,6 +47,7 @@ func (w *SimpleWriter) WriteRows(tableName string, _ []string, rows []*map[strin return nil } +// WriteDDL prints DDL as is into stdout func (w *SimpleWriter) WriteDDL(tableName string, ddl string) (err error) { fmt.Println(ddl) return nil