You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.7 KiB
64 lines
1.7 KiB
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"log"
|
|
"net"
|
|
|
|
"git.chrishayward.xyz/x/users/proto"
|
|
"git.chrishayward.xyz/x/users/server"
|
|
"github.com/google/uuid"
|
|
"google.golang.org/grpc"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/driver/sqlite"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
var (
|
|
port = flag.Uint("port", 8080, "--port=8080")
|
|
secretDefault = uuid.NewString()
|
|
secret = flag.String("secret", secretDefault, "--secret=SECRET")
|
|
dbType = flag.String("dbType", "sqlite", "--dbType=sqlite,postgress")
|
|
dbFile = flag.String("dbFile", "users.db", "--dbFile=users.db")
|
|
dbHost = flag.String("dbHost", "localhost", "--dbHost=localhost")
|
|
dbPort = flag.Uint("dbPort", 5432, "--dbPort=5432")
|
|
dbName = flag.String("dbName", "postgres", "--dbName=postgres")
|
|
dbUser = flag.String("dbUser", "postgres", "--dbUser=postgres")
|
|
dbPass = flag.String("dbPass", "postgres", "--dbPass=postgres")
|
|
)
|
|
|
|
func main() {
|
|
// Parse the optional flags.
|
|
flag.Parse()
|
|
|
|
// If the secret has not been set print it to the console.
|
|
if *secret == secretDefault {
|
|
log.Printf("SECRET=%s\n", secretDefault)
|
|
}
|
|
|
|
// Initialize the database.
|
|
var db *gorm.DB
|
|
var err error
|
|
switch *dbType {
|
|
case "postgres":
|
|
db, _ = gorm.Open(postgres.Open(fmt.Sprintf(
|
|
"host=%s user=%s password=%s dbname=%s port=%d sslmode=disable",
|
|
*dbHost, *dbUser, *dbPass, *dbName, *dbPort)))
|
|
case "sqlite":
|
|
default:
|
|
db, _ = gorm.Open(sqlite.Open(*dbFile), &gorm.Config{})
|
|
}
|
|
|
|
// Create the network listener.
|
|
lis, err := net.Listen("tcp", fmt.Sprintf(":%d", *port))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Start listening for requests.
|
|
srv := grpc.NewServer()
|
|
proto.RegisterUsersServer(srv, server.NewUsersServer(secret, db))
|
|
log.Printf("Listening on :%d", *port)
|
|
srv.Serve(lis)
|
|
}
|