personal-website/iternal/pkg/RepositoryInterface.go
2025-01-28 18:43:37 +03:00

27 lines
843 B
Go

/*
Special interface that I made to make system more reusable.
So if you need in future another db it should satisfy this interface.
Generic T represents field of database.
In this approach DB must be open everytime.
Why interface? For example you create a function that executes something on database
and you need to execute this command automaticly for any DB that contains service.Post passed.
So you will define it like this
func exec_fix_for_db(repo service.Repository[Post]) {
repo.ExecSpecific("Very important fix!!")
}
*/
package pkg
import "database/sql"
type Repository[T any] interface {
GetAllValues() ([]T, error)
GetValueByID(id int) (T, error)
InsertValue(T) (id int, err error)
DeleteValueByID(id int) error
ExecSpecific(SQL_command string) (sql.Result, error)
QuerySpecific(SQL_command string) (*sql.Rows, error)
}