SQL scripts that mostly handle the administration of databases and tables has been moved into database-primitives.go, and executed via the "runner" pattern that we came up with.

master
dtookey 4 years ago
parent 1a16e1ba38
commit 96f4eae410

@ -11,12 +11,11 @@ import (
func main() {
s := time.Now()
//icx := insight.NewInsightConnect()
//icx.InsightDBConnector.ExecuteSqlScript("insight", "create-insight-contribution-table.sql")
//processQbBilling()
//updateInsightData()
test()
updateInsightData()
//test()
f := time.Now()
log.Println(f.Sub(s).Milliseconds())
@ -32,7 +31,6 @@ func test() {
func updateInsightData() {
icx := mercury.NewInterconnect()
icx.ResetTables()
icx.UpdateUsers()
icx.UpdateTimeEntries()
}

@ -3,6 +3,7 @@ package mercury
import (
"log"
"mercury/src/projectInsight"
"mercury/src/util"
"time"
)
@ -20,6 +21,7 @@ func NewInterconnect() *Interconnect {
connect := Interconnect{}
connect.Client = projectInsight.NewIClient()
connect.InsightDBConnector = projectInsight.NewDBConnection()
connect.InsightDBConnector.DBConnectorGeneric.CreateTables()
return &connect
}
@ -50,7 +52,7 @@ func (ic *Interconnect) UpdateTimeEntries() {
coroutineCount--
log.Printf("Currently pending goroutines: %d\n", coroutineCount)
}
ic.InsightDBConnector.ExecuteSqlScript("insight", "create-insight-contribution-table.sql")
ic.InsightDBConnector.ExecuteSqlScript(util.NewRunner("insight", "create-insight-contribution-table.sql"))
}
//</editor-fold>

@ -7,9 +7,7 @@ import (
"time"
)
const (
ClarityDatabaseName = "projects"
)
const ()
type (
ClarityLifeCycleEvent struct {
@ -49,7 +47,7 @@ func (cdb *clarityDatabase) GetLifecycleEvents() *[]*ClarityLifeCycleEvent {
}
return &container
}
return util.QueryForObjects[ClarityLifeCycleEvent](cdb.DBConnectorGeneric, ClarityDatabaseName, "read-clarity-lifecycleEvents.sql", cb)
return util.QueryForObjects[ClarityLifeCycleEvent](cdb.DBConnectorGeneric, util.ClarityDatabaseName, "read-clarity-lifecycleEvents.sql", cb)
}
//</editor-fold>

@ -7,10 +7,6 @@ import (
"mercury/src/util"
)
const (
InsightDatabaseName = "insight"
)
var (
insightUserMappingFunction = func(rows *sql.Rows) *InsightUser {
user := InsightUser{}
@ -58,18 +54,10 @@ func NewDBConnection() *InsightDBConnector {
return &InsightDBConnector{&dbGeneric}
}
func (c *InsightDBConnector) CreateTables() {
tableCreationScripts := []string{"create-insight-user-table.sql", "create-insight-timeEntry-table.sql"}
for _, scriptName := range tableCreationScripts {
c.ExecuteSqlScript(InsightDatabaseName, scriptName)
}
}
func (c *InsightDBConnector) UpdateTimeEntries(entries *[]*InsightTimeEntry) {
util.BulkUpdate[InsightTimeEntry](
c.DBConnectorGeneric,
InsightDatabaseName,
util.InsightDatabaseName,
"update-insight-timeEntry.sql",
entries,
insightTimeEntryUpdateFunction,
@ -79,7 +67,7 @@ func (c *InsightDBConnector) UpdateTimeEntries(entries *[]*InsightTimeEntry) {
func (c *InsightDBConnector) UpdateUsers(users *[]*InsightUser) {
util.BulkUpdate[InsightUser](
c.DBConnectorGeneric,
InsightDatabaseName,
util.InsightDatabaseName,
"update-insight-users.sql",
users,
insightUserUpdateFunction,
@ -89,7 +77,7 @@ func (c *InsightDBConnector) UpdateUsers(users *[]*InsightUser) {
func (c *InsightDBConnector) ReadUsers() *[]*InsightUser {
return util.QueryForObjects[InsightUser](
c.DBConnectorGeneric,
InsightDatabaseName,
util.InsightDatabaseName,
"read-insight-allUsers.sql",
insightUserMappingFunction,
)
@ -98,7 +86,7 @@ func (c *InsightDBConnector) ReadUsers() *[]*InsightUser {
func (c *InsightDBConnector) ReadEngineerUsers() *[]*InsightUser {
return util.QueryForObjects[InsightUser](
c.DBConnectorGeneric,
InsightDatabaseName,
util.InsightDatabaseName,
"read-insight-engineerUsers.sql",
insightUserMappingFunction,
)

@ -0,0 +1,3 @@
CREATE DATABASE IF NOT EXISTS mercury;
CREATE DATABASE IF NOT EXISTS insight;
CREATE DATABASE IF NOT EXISTS projects;

@ -0,0 +1,22 @@
CREATE TABLE IF NOT EXISTS picture_patterns(
id int unique primary key auto_increment,
pattern varchar(512),
verified bool
);
CREATE TABLE IF NOT EXISTS picture_samples(
id int unique primary key auto_increment,
fileName varchar(512),
verified bool
);
CREATE TABLE IF NOT EXISTS picture_timestamps(
id int unique primary key auto_increment,
project_name varchar(15),
file_name varchar(512),
time_stamp_taken datetime,
time_stamp_uploaded datetime,
uploader_id int default -1
);
CREATE INDEX IF NOT EXISTS picture_timestamps_refnum on picture_timestamps (project_name);

@ -13,6 +13,10 @@ const (
dbCredsEnvName = "DB_CREDS"
dbCredsHostName = "DB_HOST"
dsnTemplate = "clarity:%s@tcp(%s)/%s?parseTime=true"
ClarityDatabaseName = "projects"
InsightDatabaseName = "insight"
MercuryDatabaseName = "mercury"
)
//<editor-fold name="DBConnectorGeneric">
@ -24,10 +28,15 @@ type DBConnectorGeneric struct {
cachedConnection *sql.DB
}
func (c *DBConnectorGeneric) ExecuteSqlScript(database string, scriptName string) {
c.startConnection(database)
type sqlScriptRunner struct {
ScriptName string
DatabaseName string
}
func (c *DBConnectorGeneric) ExecuteSqlScript(runner *sqlScriptRunner) {
c.startConnection(runner.DatabaseName)
defer c.returnConnection()
queryWhole := *loadSqlFile(scriptName)
queryWhole := *loadSqlFile(runner.ScriptName)
queryParts := strings.Split(queryWhole, ";")
log.Printf("\n=============================================\n%s\n==============================================\n", queryWhole)
@ -68,6 +77,19 @@ func (c *DBConnectorGeneric) QueryFromScript(scriptName string) *sql.Rows {
return rows
}
func (c *DBConnectorGeneric) CreateTables() {
tableCreationRunners := []*sqlScriptRunner{
NewRunner("create-any-database.sql", ""),
NewRunner("create-insight-user-table.sql", InsightDatabaseName),
NewRunner("create-insight-timeEntry-table.sql", InsightDatabaseName),
NewRunner("create-mercury-picturePatterns-table.sql", MercuryDatabaseName),
}
for _, runner := range tableCreationRunners {
c.ExecuteSqlScript(runner)
}
}
//</editor-fold>
//<editor-fold name="Utility Functions">
@ -130,4 +152,8 @@ func BulkUpdate[K any](db *DBConnectorGeneric, dbName string, updateScript strin
}
func NewRunner(scriptName string, databaseName string) *sqlScriptRunner {
return &sqlScriptRunner{scriptName, databaseName}
}
//</editor-fold>

Loading…
Cancel
Save