Skip to content

Commit

Permalink
feat: own scheduler
Browse files Browse the repository at this point in the history
  • Loading branch information
TheDevMinerTV committed Feb 18, 2023
1 parent e84b8ce commit c2ac2e4
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 16 deletions.
4 changes: 3 additions & 1 deletion .env.dist
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@ POSTGRES_HOST=postgres
POSTGRES_PORT=5432
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
POSTGRES_DB=postgres
POSTGRES_DB=postgres

EVERY=24h
58 changes: 43 additions & 15 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@ import (
"log"
"os"
"strconv"
"time"
)

func main() {
_ = godotenv.Load()
if err := godotenv.Load(); err != nil {
log.Printf("WARNING: Error loading .env file: %s\n", err)
}

postgresHost := flag.String("postgres-host", lookupEnvOrString("POSTGRES_HOST", "localhost"), "connectionOptions host")
postgresPort := flag.Int("postgres-port", lookupEnvOrInt("POSTGRES_PORT", 5432), "connectionOptions port")
Expand All @@ -25,6 +28,8 @@ func main() {
s3AccessKey := flag.String("s3-access-key", lookupEnvOrString("S3_ACCESS_KEY", "minio"), "S3 access key")
s3SecretKey := flag.String("s3-secret-key", lookupEnvOrString("S3_SECRET_KEY", "minioadmin"), "S3 secret key")

every := flag.Duration("every", lookupEnvOrDuration("EVERY", 24*time.Hour), "How often to run the backup")

flag.Parse()

must("postgres-host", postgresHost)
Expand All @@ -40,22 +45,32 @@ func main() {
log.Fatal(err)
}

file := newFileName(*postgresDB)
err = RunDump(&connectionOptions{
Host: *postgresHost,
Port: *postgresPort,
Database: *postgresDB,
Username: *postgresUser,
Password: *postgresPassword,
}, file)
if err != nil {
log.Fatal(err)
}
for {
file := newFileName(*postgresDB)
err = RunDump(&connectionOptions{
Host: *postgresHost,
Port: *postgresPort,
Database: *postgresDB,
Username: *postgresUser,
Password: *postgresPassword,
}, file)
if err != nil {
log.Printf("WARNING: Failed to dump database: %s", err)
}

log.Printf("Uploading %s to %s", file, *s3Bucket)
log.Printf("Uploading %s to %s", file, *s3Bucket)

if _, err := s3.FPutObject(context.Background(), *s3Bucket, file, file, minio.PutObjectOptions{}); err != nil {
log.Fatal(err)
if _, err := s3.FPutObject(context.Background(), *s3Bucket, file, file, minio.PutObjectOptions{}); err != nil {
log.Printf("WARNING: Failed to upload %s to %s: %s", file, *s3Bucket, err)
}

log.Printf("Removing %s", file)
if err := os.Remove(file); err != nil {
log.Printf("WARNING: Failed to remove %s: %s", file, err)
}

log.Printf("Sleeping for %s", *every)
time.Sleep(*every)
}
}

Expand All @@ -80,6 +95,19 @@ func lookupEnvOrInt(key string, defaultVal int) int {
return defaultVal
}

func lookupEnvOrDuration(key string, defaultVal time.Duration) time.Duration {
if val, ok := os.LookupEnv(key); ok {
parsed, err := time.ParseDuration(val)
if err != nil {
log.Fatal(err)
}

return parsed
}

return defaultVal
}

func must(flag string, str *string) {
if str == nil || *str == "" {
log.Fatalf("Missing required flag: %s", flag)
Expand Down

0 comments on commit c2ac2e4

Please sign in to comment.