Skip to content

Commit 70eaa51

Browse files
committed
added: database interfaces, wrappers, mocks, and create table tests
1 parent c37230b commit 70eaa51

14 files changed

+646
-124
lines changed

.idea/workspace.xml

+175-110
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Makefile

+9-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
.DEFAULT_GOAL := all
22

3-
all: |build test
3+
all: |build_deps test_deps build test
4+
5+
build_deps:
6+
go get github.com/lib/pq
47

58
test_deps:
69
go get -u github.com/onsi/ginkgo/ginkgo
710
go get -u github.com/onsi/gomega/...
11+
@go get github.com/vektra/mockery/.../
812

913
build:
1014
go build -o ./bin/csv-2-postgresql ./csv-2-postgresql
1115

12-
test:
16+
build_mocks:
17+
@mockery -all -dir postgresql/ -output mock -case=underscore
18+
19+
test: build_mocks
1320
ginkgo -r ./

bin/csv-2-postgresql

0 Bytes
Binary file not shown.

csv-2-postgresql/database_writer.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package main
22

3-
import "github.com/kmacmcfarlane/csv-2-postgresql-go/schema"
4-
53
// DatabaseWriter defines a generic interface to a database
64
type DatabaseWriter interface {
75

6+
// CreateDatabase creates a database if it does not exist
7+
CreateDatabase(name string) (err error)
88
// CreateTable instantiates a table compatible with the given schema
9-
CreateTable(name string, schema schema.Schema) error
9+
CreateTable(name string) error
1010
// Insert adds a record to the table
1111
Insert(values []string) error
1212
}

csv-2-postgresql/main.go

+43-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,47 @@
11
package main
22

3-
func main(){
3+
import (
4+
"database/sql"
5+
"flag"
6+
"fmt"
7+
"github.com/kmacmcfarlane/csv-2-postgresql-go/postgresql"
8+
"os"
9+
)
410

11+
func main() {
12+
13+
// Parse arguments
14+
args := flag.Args()
15+
16+
if len(args) != 1 || len(args) != 2 {
17+
usage()
18+
os.Exit(1)
19+
}
20+
21+
inputFile := args[0]
22+
databaseName := args[1]
23+
24+
// Connect to DB
25+
connectionString := fmt.Sprintf("user=postgres dbname=%s sslmode=verify-full", databaseName)
26+
27+
db, err := sql.Open("postgres", connectionString)
28+
29+
if nil != err {
30+
panic(err)
31+
}
32+
33+
defer db.Close()
34+
35+
sqlWrapper := postgresql.NewSQLWrapper(db)
36+
37+
// Parse schema of input
38+
39+
// Insert data to database
40+
41+
}
42+
43+
func usage(){
44+
45+
println("Usage:")
46+
println("csv-2-postgresql input_file.csv [database_name]")
547
}

csv/parser.go

-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ func (p *Parser) ParseSchema() (result schema.Schema, err error) {
3737
return result, err
3838
}
3939

40-
result.Headers = headers
41-
4240
// Get the next line to determine the type of each field
4341
p.firstRecord, err = p.reader.Read() // save this first record to avoid having to re-init the reader somehow
4442

csv/schema_test.go csv/parser_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"strings"
1010
)
1111

12-
var _ = Describe("Schema", func() {
12+
var _ = Describe("Parser", func() {
1313

1414

1515
Describe("CSVParser", func(){

mock/result.go

+52
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mock/sql.go

+51
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

postgresql/postgresql_suite_test.go

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package postgresql_test
2+
3+
import (
4+
"testing"
5+
6+
. "github.com/onsi/ginkgo"
7+
. "github.com/onsi/gomega"
8+
)
9+
10+
func TestPostgresql(t *testing.T) {
11+
RegisterFailHandler(Fail)
12+
RunSpecs(t, "Postgresql Suite")
13+
}

0 commit comments

Comments
 (0)