mirror of
https://github.com/gofiber/storage.git
synced 2025-10-04 16:22:52 +08:00
98 lines
2.3 KiB
Go
98 lines
2.3 KiB
Go
package sqlite3
|
|
|
|
import "time"
|
|
|
|
// Config defines the config for storage.
|
|
type Config struct {
|
|
// Time before deleting expired keys
|
|
//
|
|
// Default is 10 * time.Second
|
|
GCInterval time.Duration
|
|
|
|
// DB file path
|
|
//
|
|
// Default is "./fiber.sqlite3"
|
|
Database string
|
|
|
|
// DB table name
|
|
//
|
|
// Default is "fiber"
|
|
TableName string
|
|
|
|
// When set to true, this will Drop any existing table with the same name
|
|
DropTable bool
|
|
|
|
// The maximum number of connections in the idle connection pool.
|
|
//
|
|
// If MaxOpenConns is greater than 0 but less than the new MaxIdleConns,
|
|
// then the new MaxIdleConns will be reduced to match the MaxOpenConns limit.
|
|
//
|
|
// If n < 0, no idle connections are retained.
|
|
//
|
|
// The default is 100.
|
|
MaxIdleConns int
|
|
|
|
// The maximum number of open connections to the database.
|
|
//
|
|
// If MaxIdleConns is greater than 0 and the new MaxOpenConns is less than
|
|
// MaxIdleConns, then MaxIdleConns will be reduced to match the new
|
|
// MaxOpenConns limit.
|
|
//
|
|
// If n < 0, then there is no limit on the number of open connections.
|
|
//
|
|
// The default is 100.
|
|
MaxOpenConns int
|
|
|
|
// The maximum amount of time a connection may be reused.
|
|
//
|
|
// Expired connections may be closed lazily before reuse.
|
|
//
|
|
// If d < 0, connections are reused forever.
|
|
//
|
|
// The default is 1 * time.Second
|
|
ConnMaxLifetime time.Duration
|
|
}
|
|
|
|
// ConfigDefault is the default config
|
|
var ConfigDefault = Config{
|
|
GCInterval: 10 * time.Second,
|
|
Database: "./fiber.sqlite3",
|
|
TableName: "fiber",
|
|
DropTable: false,
|
|
MaxOpenConns: 100,
|
|
MaxIdleConns: 100,
|
|
ConnMaxLifetime: 1 * time.Second,
|
|
}
|
|
|
|
// Helper function to set default values
|
|
func configDefault(config ...Config) Config {
|
|
// Return default config if nothing provided
|
|
if len(config) < 1 {
|
|
return ConfigDefault
|
|
}
|
|
|
|
// Override default config
|
|
cfg := config[0]
|
|
|
|
// Set default values
|
|
if int(cfg.GCInterval) == 0 {
|
|
cfg.GCInterval = ConfigDefault.GCInterval
|
|
}
|
|
if cfg.Database == "" {
|
|
cfg.Database = ConfigDefault.Database
|
|
}
|
|
if cfg.TableName == "" {
|
|
cfg.TableName = ConfigDefault.TableName
|
|
}
|
|
if cfg.MaxOpenConns == 0 {
|
|
cfg.MaxOpenConns = ConfigDefault.MaxOpenConns
|
|
}
|
|
if cfg.MaxIdleConns == 0 {
|
|
cfg.MaxIdleConns = ConfigDefault.MaxIdleConns
|
|
}
|
|
if int(cfg.ConnMaxLifetime) == 0 {
|
|
cfg.ConnMaxLifetime = ConfigDefault.ConnMaxLifetime
|
|
}
|
|
return cfg
|
|
}
|