beginning work on picture timestamp correlation

master
dtookey 4 years ago
parent dc6ba5a8ce
commit 26c4ba93d3

@ -3,7 +3,7 @@ package main
import (
"log"
"mercury/src/mercury"
"mercury/src/projectInsight"
"mercury/src/projectClarity"
"os"
"time"
)
@ -15,21 +15,19 @@ func main() {
//icx.InsightDBConnector.ExecuteSqlScript("insight", "create-insight-contribution-table.sql")
//processQbBilling()
updateInsightData()
//test()
//updateInsightData()
test()
f := time.Now()
log.Println(f.Sub(s).Microseconds())
log.Println(f.Sub(s).Milliseconds())
}
func test() {
//clarity.NewSnitch().Test()
insightThing := projectInsight.NewDBConnection()
res := insightThing.ReadEngineerUsers()
for _, usr := range *res {
log.Println(usr.EmailAddress)
db := projectClarity.NewClarityDatabase()
events := db.GetLifecycleEvents()
for _, event := range *events {
log.Printf("%#v\n", *event)
}
}
func updateInsightData() {
@ -43,7 +41,7 @@ func processQbBilling() {
reportBase := os.Getenv("mercury_qb_path")
log.Printf("Searching for documents in %s\n", reportBase)
if len(reportBase) == 0 {
log.Fatalln("please set the mercury_path env var. we don't know where to look otherwise")
log.Fatalln("please set the mercury_qb_path env var. we don't know where to look otherwise")
}
mercury.ProcessTrialBalances(reportBase, "./updateInsightData.csv")

@ -0,0 +1,55 @@
package projectClarity
import (
"database/sql"
"log"
"mercury/src/util"
"time"
)
const (
ClarityDatabaseName = "projects"
)
type (
ClarityLifeCycleEvent struct {
Id int64
ProjectNumber string
Timestamp time.Time
ChangedColumn string
PreviousValue string
NewValue string
Modifier int32
}
)
//<editor-fold name="ClarityDatabase">
/*======================================================================================
ClarityDatabase
======================================================================================*/
type clarityDatabase struct {
*util.DBConnectorGeneric
}
func NewClarityDatabase() *clarityDatabase {
return &clarityDatabase{&util.DBConnectorGeneric{}}
}
func (cdb *clarityDatabase) GetProjects() {
}
func (cdb *clarityDatabase) GetLifecycleEvents() *[]*ClarityLifeCycleEvent {
cb := func(rows *sql.Rows) *ClarityLifeCycleEvent {
container := ClarityLifeCycleEvent{}
err := rows.Scan(&container.Id, &container.ProjectNumber, &container.Timestamp, &container.ChangedColumn, &container.PreviousValue, &container.NewValue, &container.Modifier)
if err != nil {
log.Panicln(err)
}
return &container
}
return util.QueryForObjects[ClarityLifeCycleEvent](cdb.DBConnectorGeneric, ClarityDatabaseName, "read-clarity-lifecycleEvents.sql", cb)
}
//</editor-fold>

@ -1,4 +1,4 @@
package clarity
package projectClarity
import (
"github.com/aws/aws-sdk-go/aws"

@ -1,4 +1,4 @@
package clarity
package projectClarity
import (
"log"
@ -14,12 +14,11 @@ type Snitch struct {
DB projectInsight.InsightDBConnector
}
//func NewSnitch() *Snitch {
// return &Snitch{}
//}
func NewSnitch() *Snitch {
return &Snitch{}
}
func (s *Snitch) Test() {
res := GetS3ListingForKey("us-east-1", "jds.private.rdu.str", "RDU2201010/")
for _, thing := range *res {

@ -0,0 +1,5 @@
SELECT *
FROM project_lifecycle
WHERE changed_column = 'status'
AND new_value = '+READY_FOR_REVIEW'
AND timestamp > now() - INTERVAL 2 MONTH;

@ -12,6 +12,7 @@ import (
const (
dbCredsEnvName = "DB_CREDS"
dbCredsHostName = "DB_HOST"
dsnTemplate = "clarity:%s@tcp(%s)/%s?parseTime=true"
)
//<editor-fold name="DBConnectorGeneric">
@ -24,8 +25,8 @@ type DBConnectorGeneric struct {
}
func (c *DBConnectorGeneric) ExecuteSqlScript(database string, scriptName string) {
c.StartConnection(database)
defer c.ReturnConnection()
c.startConnection(database)
defer c.returnConnection()
queryWhole := *loadSqlFile(scriptName)
queryParts := strings.Split(queryWhole, ";")
@ -43,12 +44,14 @@ func (c *DBConnectorGeneric) ExecuteSqlScript(database string, scriptName string
}
}
func (c *DBConnectorGeneric) StartConnection(dataBase string) {
// startConnection this initializes, caches, and returns a connection for the desired database
func (c *DBConnectorGeneric) startConnection(dataBase string) {
db := createDbConnection(dataBase)
c.cachedConnection = db
}
func (c *DBConnectorGeneric) ReturnConnection() {
// returnConnection This just closes the cached db connection
func (c *DBConnectorGeneric) returnConnection() {
err := c.cachedConnection.Close()
if err != nil {
log.Panic(err)
@ -75,7 +78,7 @@ func (c *DBConnectorGeneric) QueryFromScript(scriptName string) *sql.Rows {
func createDbConnection(database string) *sql.DB {
cred := os.Getenv(dbCredsEnvName)
host := os.Getenv(dbCredsHostName)
dbString := "clarity:%s@tcp(%s)/%s"
dbString := dsnTemplate
connectString := fmt.Sprintf(dbString, cred, host, database)
db, err := sql.Open("mysql", connectString)
@ -101,8 +104,8 @@ func loadSqlFile(scriptName string) *string {
func QueryForObjects[K any](db *DBConnectorGeneric, dbName string, queryScript string, mapping func(rows *sql.Rows) *K) *[]*K {
rs := make([]*K, 0, 10000)
db.StartConnection(dbName)
defer db.ReturnConnection()
db.startConnection(dbName)
defer db.returnConnection()
res := db.QueryFromScript(queryScript)
for res.Next() {
@ -114,8 +117,8 @@ func QueryForObjects[K any](db *DBConnectorGeneric, dbName string, queryScript s
}
func BulkUpdate[K any](db *DBConnectorGeneric, dbName string, updateScript string, items *[]*K, mapping func(s *sql.Stmt, item *K)) {
db.StartConnection(dbName)
defer db.ReturnConnection()
db.startConnection(dbName)
defer db.returnConnection()
statement := loadSqlFile(updateScript)
s, err := db.cachedConnection.Prepare(*statement)
if err != nil {

Loading…
Cancel
Save