@ -14,13 +14,18 @@ const (
InsightDatabaseName = "insight"
InsightDatabaseName = "insight"
)
)
type Connector struct { }
//<editor-fold name="DBConnector">
/ *= == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =
DBConnector
== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == * /
func NewInsightConnection ( ) * Connector {
type DBConnector struct { }
return & Connector { }
func NewDBConnection ( ) * DBConnector {
return & DBConnector { }
}
}
func ( c * Connector) CreateTables ( ) {
func ( c * DB Connector) CreateTables ( ) {
tableCreationScripts := [ ] string { "create-user-table.sql" , "create-timeentry-table.sql" }
tableCreationScripts := [ ] string { "create-user-table.sql" , "create-timeentry-table.sql" }
for _ , scriptName := range tableCreationScripts {
for _ , scriptName := range tableCreationScripts {
@ -28,7 +33,7 @@ func (c *Connector) CreateTables() {
}
}
}
}
func ( c * Connector) UpdateTimeEntries ( entries * [ ] TimeEntry ) {
func ( c * DB Connector) UpdateTimeEntries ( entries * [ ] * TimeEntry ) {
statement := loadSqlFile ( "update-timeentry.sql" )
statement := loadSqlFile ( "update-timeentry.sql" )
db := c . checkoutConnection ( InsightDatabaseName )
db := c . checkoutConnection ( InsightDatabaseName )
defer c . returnConnection ( db )
defer c . returnConnection ( db )
@ -61,7 +66,7 @@ func (c *Connector) UpdateTimeEntries(entries *[]TimeEntry) {
}
}
}
}
func ( c * Connector) UpdateUsers ( users * [ ] User ) {
func ( c * DB Connector) UpdateUsers ( users * [ ] User ) {
statement := loadSqlFile ( "update-users.sql" )
statement := loadSqlFile ( "update-users.sql" )
db := c . checkoutConnection ( InsightDatabaseName )
db := c . checkoutConnection ( InsightDatabaseName )
defer c . returnConnection ( db )
defer c . returnConnection ( db )
@ -79,7 +84,26 @@ func (c *Connector) UpdateUsers(users *[]User) {
}
}
}
}
func ( c * Connector ) ExecuteSqlScript ( database string , scriptName string ) {
func ( c * DBConnector ) FetchUsers ( ) * [ ] * User {
ret := make ( [ ] * User , 0 , 50 )
cx := c . checkoutConnection ( InsightDatabaseName )
queryText := "SELECT * FROM users;"
rs , err := cx . Query ( queryText )
if err != nil {
log . Fatalln ( err )
}
for rs . Next ( ) {
u := User { }
err := rs . Scan ( & u . Id , & u . FirstName , & u . LastName , & u . EmailAddress )
if err != nil {
log . Fatalln ( err )
}
ret = append ( ret , & u )
}
return & ret
}
func ( c * DBConnector ) ExecuteSqlScript ( database string , scriptName string ) {
db := c . checkoutConnection ( database )
db := c . checkoutConnection ( database )
defer c . returnConnection ( db )
defer c . returnConnection ( db )
queryWhole := * loadSqlFile ( scriptName )
queryWhole := * loadSqlFile ( scriptName )
@ -99,14 +123,21 @@ func (c *Connector) ExecuteSqlScript(database string, scriptName string) {
}
}
}
}
func ( c * Connector) checkoutConnection ( dataBase string ) * sql . DB {
func ( c * DB Connector) checkoutConnection ( dataBase string ) * sql . DB {
return createDbConnection ( dataBase )
return createDbConnection ( dataBase )
}
}
func ( c * Connector) returnConnection ( db * sql . DB ) {
func ( c * DB Connector) returnConnection ( db * sql . DB ) {
db . Close ( )
db . Close ( )
}
}
//</editor-fold>
//<editor-fold name="Utility Functions">
/ *= == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == =
Utility Functions
== == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == == * /
func createDbConnection ( database string ) * sql . DB {
func createDbConnection ( database string ) * sql . DB {
secret := getSecret ( "/home/dtookey/work/datastudio-db-creds.txt" )
secret := getSecret ( "/home/dtookey/work/datastudio-db-creds.txt" )
dbString := "clarity:%s@tcp(data-connect.carolina.engineering)/%s"
dbString := "clarity:%s@tcp(data-connect.carolina.engineering)/%s"
@ -146,3 +177,5 @@ func loadSqlFile(scriptName string) *string {
str := strings . Trim ( string ( raw ) , "\n" )
str := strings . Trim ( string ( raw ) , "\n" )
return & str
return & str
}
}
//</editor-fold>