Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
31258a50a4 | ||
![]() |
2ce3d755bd | ||
![]() |
f7bae81df7 | ||
![]() |
3f8e334dbb | ||
![]() |
6d24df4153 |
4
db.go
4
db.go
@ -15,6 +15,10 @@ type Database struct {
|
|||||||
func InitDatabase(database *Database, conn *sql.DB) {
|
func InitDatabase(database *Database, conn *sql.DB) {
|
||||||
panicOnNil(database)
|
panicOnNil(database)
|
||||||
|
|
||||||
|
if database.db != nil {
|
||||||
|
panic("database is initialized already")
|
||||||
|
}
|
||||||
|
|
||||||
*database = Database{
|
*database = Database{
|
||||||
db: conn,
|
db: conn,
|
||||||
stmts: map[string]*sql.Stmt{},
|
stmts: map[string]*sql.Stmt{},
|
||||||
|
11
delete.go
Normal file
11
delete.go
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package advsql
|
||||||
|
|
||||||
|
func Delete(db *Database, query string) DeleteFunc {
|
||||||
|
prepareGlobal(db, query)
|
||||||
|
|
||||||
|
return func(args ...interface{}) error {
|
||||||
|
s := db.stmt(query)
|
||||||
|
_, err := s.Exec(args...)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
@ -11,4 +11,6 @@ type QueryOneContextFunc[T any] func(ctx context.Context, args ...interface{}) *
|
|||||||
type InsertFunc[T any] func(v *T) error
|
type InsertFunc[T any] func(v *T) error
|
||||||
type UpdateFunc[T any] func(v *T) error
|
type UpdateFunc[T any] func(v *T) error
|
||||||
|
|
||||||
|
type DeleteFunc func(args ...interface{}) error
|
||||||
|
|
||||||
type ScanFunc = func(args ...interface{}) error
|
type ScanFunc = func(args ...interface{}) error
|
||||||
|
7
go.mod
7
go.mod
@ -1,8 +1,5 @@
|
|||||||
module git.tordarus.net/Tordarus/advsql
|
module git.milar.in/milarin/advsql
|
||||||
|
|
||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
require (
|
require github.com/go-sql-driver/mysql v1.6.0
|
||||||
git.tordarus.net/Tordarus/adverr v0.2.0
|
|
||||||
github.com/go-sql-driver/mysql v1.6.0
|
|
||||||
)
|
|
||||||
|
2
go.sum
2
go.sum
@ -1,4 +1,2 @@
|
|||||||
git.tordarus.net/Tordarus/adverr v0.2.0 h1:kLYjR2/Vb2GHiSAMvAv+WPNaHR9BRphKanf8H/pCZdA=
|
|
||||||
git.tordarus.net/Tordarus/adverr v0.2.0/go.mod h1:XRf0+7nhOkIEr0gi9DUG4RvV2KaOFB0fYPDaR1KLenw=
|
|
||||||
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
|
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
|
||||||
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||||
|
59
stmt.go
59
stmt.go
@ -1,59 +0,0 @@
|
|||||||
package advsql
|
|
||||||
|
|
||||||
// import (
|
|
||||||
// "database/sql"
|
|
||||||
// )
|
|
||||||
|
|
||||||
// type Stmt[M any] struct {
|
|
||||||
// stmt *sql.Stmt
|
|
||||||
// scan func(Scanner) (*M, error)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func NewStmt[M any](db *Database, query string, scan func(s Scanner) (*M, error)) (*Stmt[M], error) {
|
|
||||||
// s, err := db.db.Prepare(query)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// stmt := Stmt[M]{
|
|
||||||
// stmt: s,
|
|
||||||
// scan: scan,
|
|
||||||
// }
|
|
||||||
// db.closefuncs = append(db.closefuncs, stmt.Close)
|
|
||||||
// return &stmt, err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (stmt *Stmt[M]) Close() error {
|
|
||||||
// return stmt.stmt.Close()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (stmt *Stmt[M]) Many(args ...interface{}) (<-chan *M, error) {
|
|
||||||
// rows, err := stmt.stmt.Query(args...)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
|
|
||||||
// out := make(chan *M, 10)
|
|
||||||
|
|
||||||
// go func() {
|
|
||||||
// defer rows.Close()
|
|
||||||
// defer close(out)
|
|
||||||
|
|
||||||
// for rows.Next() {
|
|
||||||
// if v, err := stmt.scan(rows); err == nil {
|
|
||||||
// out <- v
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }()
|
|
||||||
|
|
||||||
// return out, nil
|
|
||||||
// }
|
|
||||||
|
|
||||||
// func (stmt *Stmt[M]) Single(args ...interface{}) (*M, error) {
|
|
||||||
// rows, err := stmt.stmt.Query(args...)
|
|
||||||
// if err != nil {
|
|
||||||
// return nil, err
|
|
||||||
// }
|
|
||||||
// defer rows.Close()
|
|
||||||
// return stmt.scan(rows)
|
|
||||||
// }
|
|
Loading…
x
Reference in New Issue
Block a user