61 lines
1.1 KiB
Go
61 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
)
|
|
|
|
func fileExists(filename string) bool {
|
|
_, err := os.Stat(filename)
|
|
return err == nil
|
|
}
|
|
|
|
func convertToStringSlice(slice any) []string {
|
|
if s, ok := slice.([]any); ok {
|
|
result := make([]string, len(s))
|
|
for i, v := range s {
|
|
if str, ok := v.(string); ok {
|
|
result[i] = str
|
|
}
|
|
}
|
|
return result
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func getString(m map[string]any, key string) string {
|
|
if val, ok := m[key].(string); ok {
|
|
return val
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func formatBytes(size int64) string {
|
|
const unit = 1024
|
|
if size < unit {
|
|
return fmt.Sprintf("%d B", size)
|
|
}
|
|
div, exp := int64(unit), 0
|
|
for n := size / unit; n >= unit; n /= unit {
|
|
div *= unit
|
|
exp++
|
|
}
|
|
units := []string{"KB", "MB", "GB", "TB", "PB", "EB"}
|
|
if exp >= len(units) {
|
|
exp = len(units) - 1
|
|
}
|
|
return fmt.Sprintf("%.1f %s", float64(size)/float64(div), units[exp])
|
|
}
|
|
|
|
func getTotalSize(m *MultipartUpload) int64 {
|
|
if m == nil {
|
|
return 0
|
|
}
|
|
// If database file is sql file, divide its size by 8 atleast
|
|
if strings.HasSuffix(m.FileName, ".sql") {
|
|
return m.TotalSize / 8
|
|
}
|
|
return m.TotalSize
|
|
}
|