diff --git a/main.go b/main.go index d0b9cd1..6ef24ca 100644 --- a/main.go +++ b/main.go @@ -2,14 +2,10 @@ package main import ( "flag" - "log" -) + "fmt" -func checkErr(err error) { - if err != nil { - log.Fatal(err) - } -} + "github.com/robviren/xl/runner" +) func main() { var ( @@ -23,11 +19,12 @@ func main() { flag.IntVar(&month, "month", 0, "Sets the month for the data to process") flag.Parse() - run := NewRunner() + run := runner.NewRunner() if excel_file != "" { - ProcessExcel(excel_file) + run.ProcessExcel(excel_file) } else if get_top { - run.GetTop() + data := run.GetTop() + fmt.Println(data) } else { flag.PrintDefaults() } diff --git a/runner/description.go b/runner/description.go new file mode 100644 index 0000000..28f7dd1 --- /dev/null +++ b/runner/description.go @@ -0,0 +1,5 @@ +package runner + +func (r *Runner) DescriptionTYD(description string) []Data { + +} diff --git a/get_top.go b/runner/get_top.go similarity index 52% rename from get_top.go rename to runner/get_top.go index 2be5fe4..c4d4847 100644 --- a/get_top.go +++ b/runner/get_top.go @@ -1,7 +1,6 @@ -package main +package runner import ( - "database/sql" _ "embed" "fmt" "time" @@ -10,17 +9,7 @@ import ( //go:embed sql/get_top.sql var get_top string -type GetTopResult struct { - Description string `db:"description,omitempty"` - Sku string `db:"sku,omitempty"` - Level2 string `db:"level2,omitempty"` - Level3 string `db:"level3,omitempty"` - Rev float64 `db:"rev,omitempty"` - Qty int64 `db:"qty,omitempty"` - Trend sql.NullFloat64 `db:"trend,omitempty"` -} - -func (r *Runner) GetTop() []GetTopResult { +func (r *Runner) GetTop() []Data { //Get Current Days current_day := time.Now() year := current_day.Format("2006") @@ -29,8 +18,9 @@ func (r *Runner) GetTop() []GetTopResult { four_previous_month := current_day.AddDate(0, -4, 0).Format("01") query_string := fmt.Sprintf(get_top, year, previous_month, four_previous_month, two_previous_month) - var top []GetTopResult + var top []Data err := r.db.Select(&top, query_string) checkErr(err) + return top } diff --git a/process_excel.go b/runner/process_excel.go similarity index 64% rename from process_excel.go rename to runner/process_excel.go index 30b2658..42c4fcb 100644 --- a/process_excel.go +++ b/runner/process_excel.go @@ -1,4 +1,4 @@ -package main +package runner import ( "fmt" @@ -18,18 +18,19 @@ import ( var schema string type Data struct { - Description string - SKU string - Level2 string - Level3 string - Revenue float64 - Cost float64 - Quantity int64 - Year int64 - Month int64 + Description string `db:"description,omitempty"` + SKU string `db:"sku,omitempty"` + Level2 string `db:"level2,omitempty"` + Level3 string `db:"level3,omitempty"` + Revenue float64 `db:"revenue,omitempty"` + Cost float64 `db:"cost,omitempty"` + Quantity int64 `db:"quantity,omitempty"` + Year int64 `db:"year,omitempty"` + Month int64 `db:"month,omitempty"` + Trend sql.NullFloat64 `db:"trend,omitempty"` } -func ProcessExcel(path string) { +func (r *Runner) ProcessExcel(path string) { fmt.Println("Processing excel file...") start := time.Now() @@ -79,10 +80,10 @@ func ProcessExcel(path string) { values := []string{} for _, elm := range data { - values = append(values, fmt.Sprintf(`("%s","%s","%s","%s",%f,%f,%d,"%d","%d")`, strings.ReplaceAll(elm.Description, "\"", ""), elm.SKU, elm.Level2, elm.Level3, elm.Revenue, elm.Cost, elm.Quantity, elm.Year, elm.Month)) + values = append(values, fmt.Sprintf(`("%s","%s","%s","%s",%f,%f,%d,"%d","%d",%f)`, strings.ReplaceAll(elm.Description, "\"", ""), elm.SKU, elm.Level2, elm.Level3, elm.Revenue, elm.Cost, elm.Quantity, elm.Year, elm.Month, 0.0)) } - stmt := "INSERT INTO data (description,sku,level2,level3,revenue,cost,quantity,year,month) VALUES " + strings.Join(values, ",") + stmt := "INSERT INTO data (description,sku,level2,level3,revenue,cost,quantity,year,month,trend) VALUES " + strings.Join(values, ",") _, err = db.Exec(stmt) checkErr(err) diff --git a/runner/results.go b/runner/results.go new file mode 100644 index 0000000..75c10db --- /dev/null +++ b/runner/results.go @@ -0,0 +1 @@ +package runner diff --git a/runner.go b/runner/runner.go similarity index 95% rename from runner.go rename to runner/runner.go index 1cd5b7e..877252b 100644 --- a/runner.go +++ b/runner/runner.go @@ -1,4 +1,4 @@ -package main +package runner import "github.com/jmoiron/sqlx" diff --git a/sql/CFY.sql b/runner/sql/CFY.sql similarity index 100% rename from sql/CFY.sql rename to runner/sql/CFY.sql diff --git a/sql/get_top.sql b/runner/sql/get_top.sql similarity index 89% rename from sql/get_top.sql rename to runner/sql/get_top.sql index d05f79b..96e178f 100644 --- a/sql/get_top.sql +++ b/runner/sql/get_top.sql @@ -3,8 +3,8 @@ SELECT sku, level2, level3, - rev, - qty, + revenue, + quantity, trend from ( @@ -16,8 +16,8 @@ from SUM(revenue) DESC ) rownum, SUM(revenue) OVER (PARTITION BY level2) total, - ROUND(SUM(revenue), 2) as rev, - SUM(quantity) as qty, + ROUND(SUM(revenue), 2) as revenue, + SUM(quantity) as quantity, trend FROM ( @@ -57,8 +57,8 @@ from ) WHERE rownum <= 10 - and rev > 0 + and revenue > 0 order by - (sum(rev) over ( + (sum(revenue) over ( partition by level2 )) desc; \ No newline at end of file diff --git a/sql/schema.sql b/runner/sql/schema.sql similarity index 100% rename from sql/schema.sql rename to runner/sql/schema.sql diff --git a/runner/util.go b/runner/util.go new file mode 100644 index 0000000..0449ef6 --- /dev/null +++ b/runner/util.go @@ -0,0 +1,9 @@ +package runner + +import "log" + +func checkErr(err error) { + if err != nil { + log.Fatal(err) + } +}