update database to use new config package
This commit is contained in:
parent
3145c2c0aa
commit
db776d34dd
@ -9,6 +9,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.keircn.com/keiran/termcloud/internal/config"
|
||||||
"github.com/jackc/pgx/v5/pgxpool"
|
"github.com/jackc/pgx/v5/pgxpool"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -43,10 +44,14 @@ type Object struct {
|
|||||||
|
|
||||||
type BucketService struct {
|
type BucketService struct {
|
||||||
pool *pgxpool.Pool
|
pool *pgxpool.Pool
|
||||||
|
storageDir string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewBucketService(pool *pgxpool.Pool) *BucketService {
|
func NewBucketService(pool *pgxpool.Pool, cfg *config.Config) *BucketService {
|
||||||
return &BucketService{pool: pool}
|
return &BucketService{
|
||||||
|
pool: pool,
|
||||||
|
storageDir: cfg.StorageDir,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *BucketService) CreateUser(ctx context.Context, username, email, apiKey string, storageLimit int64) (*User, error) {
|
func (s *BucketService) CreateUser(ctx context.Context, username, email, apiKey string, storageLimit int64) (*User, error) {
|
||||||
@ -136,12 +141,12 @@ func (s *BucketService) DeleteBucket(ctx context.Context, bucketName string, own
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, obj := range objects {
|
for _, obj := range objects {
|
||||||
if err := os.Remove(filepath.Join("storage", bucketName, obj.Key)); err != nil {
|
if err := os.Remove(filepath.Join(s.storageDir, bucketName, obj.Key)); err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
os.RemoveAll(filepath.Join("storage", bucketName))
|
os.RemoveAll(filepath.Join(s.storageDir, bucketName))
|
||||||
|
|
||||||
_, err = s.pool.Exec(ctx, "DELETE FROM buckets WHERE name = $1 AND owner_id = $2", bucketName, ownerID)
|
_, err = s.pool.Exec(ctx, "DELETE FROM buckets WHERE name = $1 AND owner_id = $2", bucketName, ownerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -165,7 +170,7 @@ func (s *BucketService) UploadObject(ctx context.Context, bucketID int64, key st
|
|||||||
return nil, fmt.Errorf("storage limit exceeded")
|
return nil, fmt.Errorf("storage limit exceeded")
|
||||||
}
|
}
|
||||||
|
|
||||||
bucketDir := filepath.Join("storage", bucket.Name)
|
bucketDir := filepath.Join(s.storageDir, bucket.Name)
|
||||||
if err := os.MkdirAll(bucketDir, 0755); err != nil {
|
if err := os.MkdirAll(bucketDir, 0755); err != nil {
|
||||||
return nil, fmt.Errorf("failed to create bucket directory: %w", err)
|
return nil, fmt.Errorf("failed to create bucket directory: %w", err)
|
||||||
}
|
}
|
||||||
@ -249,7 +254,7 @@ func (s *BucketService) DeleteObject(ctx context.Context, bucketID int64, key st
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
filePath := filepath.Join("storage", bucket.Name, key)
|
filePath := filepath.Join(s.storageDir, bucket.Name, key)
|
||||||
if err := os.Remove(filePath); err != nil && !os.IsNotExist(err) {
|
if err := os.Remove(filePath); err != nil && !os.IsNotExist(err) {
|
||||||
return fmt.Errorf("failed to remove file: %w", err)
|
return fmt.Errorf("failed to remove file: %w", err)
|
||||||
}
|
}
|
||||||
@ -272,7 +277,7 @@ func (s *BucketService) GetObjectFile(ctx context.Context, bucketName, key strin
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
filePath := filepath.Join("storage", bucketName, key)
|
filePath := filepath.Join(s.storageDir, bucketName, key)
|
||||||
file, err := os.Open(filePath)
|
file, err := os.Open(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("failed to open file: %w", err)
|
return nil, fmt.Errorf("failed to open file: %w", err)
|
||||||
|
|||||||
@ -4,28 +4,26 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
|
"git.keircn.com/keiran/termcloud/internal/config"
|
||||||
"github.com/jackc/pgx/v5/pgxpool"
|
"github.com/jackc/pgx/v5/pgxpool"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewPool(ctx context.Context) (*pgxpool.Pool, error) {
|
func NewPool(ctx context.Context, cfg *config.Config) (*pgxpool.Pool, error) {
|
||||||
connStr := os.Getenv("DATABASE_URL")
|
if cfg.DatabaseURL == "" {
|
||||||
if connStr == "" {
|
|
||||||
return nil, fmt.Errorf("DATABASE_URL environment variable is not set")
|
return nil, fmt.Errorf("DATABASE_URL environment variable is not set")
|
||||||
}
|
}
|
||||||
|
|
||||||
config, err := pgxpool.ParseConfig(connStr)
|
config, err := pgxpool.ParseConfig(cfg.DatabaseURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("unable to parse DATABASE_URL: %w", err)
|
return nil, fmt.Errorf("unable to parse DATABASE_URL: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
config.MaxConns = 100
|
config.MaxConns = cfg.MaxConnections
|
||||||
config.MinConns = 10
|
config.MinConns = cfg.MinConnections
|
||||||
config.MaxConnLifetime = time.Hour
|
config.MaxConnLifetime = cfg.ConnLifetime
|
||||||
config.MaxConnIdleTime = time.Minute
|
config.MaxConnIdleTime = cfg.ConnIdleTime
|
||||||
config.HealthCheckPeriod = 5 * time.Second
|
config.HealthCheckPeriod = cfg.HealthCheckPeriod
|
||||||
|
|
||||||
pool, err := pgxpool.NewWithConfig(ctx, config)
|
pool, err := pgxpool.NewWithConfig(ctx, config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user