// Package db 提供统一的数据存储接口
// 定义存储接口规范，支持多种存储后端实现
// 当前支持PostgreSQL实现
package db

import (
	"gorm.io/gorm"
)

// Storage 代表统一的存储接口
// 所有存储实现都需要实现此接口定义的方法
type Storage interface {
	// Connect 建立与存储后端的连接
	Connect() error

	// Disconnect 断开与存储后端的连接
	Disconnect() error

	// GetDB 获取数据库实例
	GetDB() *gorm.DB
}

// NewStorage 创建并返回一个存储实例
// 根据配置返回相应的存储实现
func NewStorage(connectionString string, maxOpenConns, maxIdleConns, connMaxLifetime int) Storage {
	// 当前默认返回PostgreSQL存储实现
	s := NewPostgresStorage(connectionString, maxOpenConns, maxIdleConns, connMaxLifetime)
	return s
}
