diff options
author | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2025-01-03 01:47:07 -0800 |
---|---|---|
committer | Elizabeth Hunt <elizabeth.hunt@simponic.xyz> | 2025-01-03 01:47:07 -0800 |
commit | f163a242792cd325c9414587d52f3d8584f28df1 (patch) | |
tree | b57ad121cc3f4ffc2bc55f4d63bfaaf6026dd239 /main.go | |
download | phoneof-f163a242792cd325c9414587d52f3d8584f28df1.tar.gz phoneof-f163a242792cd325c9414587d52f3d8584f28df1.zip |
initial commit
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 63 |
1 files changed, 63 insertions, 0 deletions
@@ -0,0 +1,63 @@ +package main + +import ( + "fmt" + "log" + "net/http" + + "git.simponic.xyz/simponic/phoneof/api" + "git.simponic.xyz/simponic/phoneof/args" + "git.simponic.xyz/simponic/phoneof/database" + "git.simponic.xyz/simponic/phoneof/scheduler" + "github.com/joho/godotenv" +) + +func main() { + log.SetFlags(log.LstdFlags | log.Lshortfile) + + err := godotenv.Load() + if err != nil { + log.Println("could not load .env file:", err) + } + + argv, err := args.GetArgs() + if err != nil { + log.Fatal(err) + } + + dbConn := database.MakeConn(&argv.DatabasePath) + defer dbConn.Close() + + if argv.Migrate { + _, err = database.Migrate(dbConn) + if err != nil { + log.Fatal(err) + } + log.Println("database migrated successfully") + } + + if argv.Scheduler { + go func() { + scheduler.StartScheduler(dbConn, argv) + }() + } + + if argv.Server { + mux := api.MakeMux(argv, dbConn) + log.Println("🚀🚀 phoneof API listening on port", argv.Port) + go func() { + server := &http.Server{ + Addr: ":" + fmt.Sprint(argv.Port), + Handler: mux, + } + err = server.ListenAndServe() + if err != nil { + log.Fatal(err) + } + }() + } + + if argv.Server || argv.Scheduler { + select {} // block forever + } +} |