add admin cli
This commit is contained in:
parent
f142c45178
commit
d54bcc0b75
80
cmd/admin/main.go
Normal file
80
cmd/admin/main.go
Normal file
@ -0,0 +1,80 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
"git.keircn.com/keiran/termcloud/internal/db"
|
||||
)
|
||||
|
||||
func generateAPIKey() string {
|
||||
bytes := make([]byte, 32)
|
||||
if _, err := rand.Read(bytes); err != nil {
|
||||
log.Fatalf("Failed to generate API key: %v", err)
|
||||
}
|
||||
return hex.EncodeToString(bytes)
|
||||
}
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 2 {
|
||||
fmt.Println("Usage: termcloud-admin <command> [args...]")
|
||||
fmt.Println("Commands:")
|
||||
fmt.Println(" create-user <username> <email> [storage_limit_gb]")
|
||||
fmt.Println(" list-users")
|
||||
return
|
||||
}
|
||||
|
||||
ctx := context.Background()
|
||||
pool, err := db.NewPool(ctx)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to create database pool: %v", err)
|
||||
}
|
||||
defer db.ClosePool(pool)
|
||||
|
||||
bucketService := db.NewBucketService(pool)
|
||||
|
||||
switch os.Args[1] {
|
||||
case "create-user":
|
||||
if len(os.Args) < 4 {
|
||||
fmt.Println("Usage: create-user <username> <email> [storage_limit_gb]")
|
||||
return
|
||||
}
|
||||
|
||||
username := os.Args[2]
|
||||
email := os.Args[3]
|
||||
storageLimit := int64(1) * 1024 * 1024 * 1024
|
||||
|
||||
if len(os.Args) >= 5 {
|
||||
var limitGB int64
|
||||
if _, err := fmt.Sscanf(os.Args[4], "%d", &limitGB); err != nil {
|
||||
fmt.Printf("Invalid storage limit: %v\n", err)
|
||||
return
|
||||
}
|
||||
storageLimit = limitGB * 1024 * 1024 * 1024
|
||||
}
|
||||
|
||||
apiKey := generateAPIKey()
|
||||
user, err := bucketService.CreateUser(ctx, username, email, apiKey, storageLimit)
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to create user: %v\n", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("Created user:\n")
|
||||
fmt.Printf(" ID: %d\n", user.ID)
|
||||
fmt.Printf(" Username: %s\n", user.Username)
|
||||
fmt.Printf(" Email: %s\n", user.Email)
|
||||
fmt.Printf(" API Key: %s\n", apiKey)
|
||||
fmt.Printf(" Storage Limit: %d GB\n", user.StorageLimitBytes/1024/1024/1024)
|
||||
|
||||
case "list-users":
|
||||
fmt.Println("List users functionality not yet implemented")
|
||||
|
||||
default:
|
||||
fmt.Printf("Unknown command: %s\n", os.Args[1])
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user