ui: add B2B olmayan stok (orphans) page
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bssapp-backend/db"
|
||||
"bssapp-backend/queries"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
mode := flag.String("mode", "full", "refresh mode: full or delta")
|
||||
stage := flag.String("stage", "all", "refresh stage: all, sales, stock, price, or kpi")
|
||||
resumeAfter := flag.Int("resume-after", 0, "skip this many source rows before inserting; implies skip-delete")
|
||||
skipDelete := flag.Bool("skip-delete", false, "skip deleting cache rows for the selected stage")
|
||||
start := flag.String("start", "2022-01-01", "start date in YYYY-MM-DD")
|
||||
end := flag.String("end", "", "end date in YYYY-MM-DD; default today")
|
||||
mssqlTimeoutSec := flag.Int("mssql-timeout-sec", 43200, "MSSQL connection/read timeout in seconds for long refresh jobs")
|
||||
flag.Parse()
|
||||
|
||||
_ = godotenv.Load(".env", "mail.env")
|
||||
if runtime.GOOS == "windows" {
|
||||
_ = godotenv.Overload(".env.local")
|
||||
}
|
||||
if *mssqlTimeoutSec > 0 {
|
||||
timeout := strconv.Itoa(*mssqlTimeoutSec)
|
||||
_ = os.Setenv("MSSQL_CONNECTION_TIMEOUT_SEC", timeout)
|
||||
_ = os.Setenv("MSSQL_DIAL_TIMEOUT_SEC", timeout)
|
||||
}
|
||||
|
||||
if err := db.ConnectMSSQL(); err != nil {
|
||||
log.Fatalf("mssql connect failed: %v", err)
|
||||
}
|
||||
defer db.MssqlDB.Close()
|
||||
|
||||
pg, err := db.ConnectPostgres()
|
||||
if err != nil {
|
||||
log.Fatalf("postgres connect failed: %v", err)
|
||||
}
|
||||
defer pg.Close()
|
||||
|
||||
startDate, err := time.Parse("2006-01-02", *start)
|
||||
if err != nil {
|
||||
log.Fatalf("invalid start date: %v", err)
|
||||
}
|
||||
var endDate time.Time
|
||||
if *end == "" {
|
||||
endDate = time.Now()
|
||||
} else {
|
||||
endDate, err = time.Parse("2006-01-02", *end)
|
||||
if err != nil {
|
||||
log.Fatalf("invalid end date: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
refreshTimeout := time.Duration(*mssqlTimeoutSec) * time.Second
|
||||
ctx, cancel := context.WithTimeout(context.Background(), refreshTimeout)
|
||||
defer cancel()
|
||||
|
||||
result, err := queries.RefreshProductPerformance(ctx, pg, queries.ProductPerformanceRefreshRequest{
|
||||
Mode: *mode,
|
||||
Stage: *stage,
|
||||
ResumeAfter: *resumeAfter,
|
||||
SkipDelete: *skipDelete,
|
||||
StartDate: startDate,
|
||||
EndDate: endDate,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("refresh failed: %v", err)
|
||||
}
|
||||
out, _ := json.MarshalIndent(result, "", " ")
|
||||
fmt.Println(string(out))
|
||||
}
|
||||
Reference in New Issue
Block a user