diff --git a/src/mercury.go b/src/mercury.go
index b66c100..ed5da81 100644
--- a/src/mercury.go
+++ b/src/mercury.go
@@ -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()
}
diff --git a/src/mercury/Interconnect.go b/src/mercury/Interconnect.go
index 6ab9176..67f36c7 100644
--- a/src/mercury/Interconnect.go
+++ b/src/mercury/Interconnect.go
@@ -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"))
}
//
diff --git a/src/projectClarity/clarity-database.go b/src/projectClarity/clarity-database.go
index 2f2ffa3..a64c26b 100644
--- a/src/projectClarity/clarity-database.go
+++ b/src/projectClarity/clarity-database.go
@@ -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)
}
//
diff --git a/src/projectInsight/insight-database.go b/src/projectInsight/insight-database.go
index f91d625..2414431 100644
--- a/src/projectInsight/insight-database.go
+++ b/src/projectInsight/insight-database.go
@@ -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,
)
diff --git a/src/sql/create-any-database.sql b/src/sql/create-any-database.sql
new file mode 100644
index 0000000..fad2cf9
--- /dev/null
+++ b/src/sql/create-any-database.sql
@@ -0,0 +1,3 @@
+CREATE DATABASE IF NOT EXISTS mercury;
+CREATE DATABASE IF NOT EXISTS insight;
+CREATE DATABASE IF NOT EXISTS projects;
\ No newline at end of file
diff --git a/src/sql/create-mercury-picturePatterns-table.sql b/src/sql/create-mercury-picturePatterns-table.sql
new file mode 100644
index 0000000..9a5ed49
--- /dev/null
+++ b/src/sql/create-mercury-picturePatterns-table.sql
@@ -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);
diff --git a/src/util/database-primitives.go b/src/util/database-primitives.go
index 01517cb..005c677 100644
--- a/src/util/database-primitives.go
+++ b/src/util/database-primitives.go
@@ -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"
)
//
@@ -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)
+ }
+}
+
//
//
@@ -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}
+}
+
//