Compare commits
No commits in common. "main" and "v0.0.10" have entirely different histories.
7
db.go
7
db.go
@ -2,7 +2,6 @@ package advsql
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
|
||||||
|
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
)
|
)
|
||||||
@ -15,10 +14,6 @@ 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{},
|
||||||
@ -58,7 +53,7 @@ func (db *Database) stmt(query string) *sql.Stmt {
|
|||||||
|
|
||||||
stmt, err := db.db.Prepare(query)
|
stmt, err := db.db.Prepare(query)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("compilation failed for query '%s' reason: %w", query, err))
|
panic(err)
|
||||||
}
|
}
|
||||||
db.stmts[query] = stmt
|
db.stmts[query] = stmt
|
||||||
return stmt
|
return stmt
|
||||||
|
@ -9,7 +9,7 @@ import (
|
|||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
)
|
)
|
||||||
|
|
||||||
var TestDatabase = new(Database)
|
var TestDatabase *Database //= new(Database)
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
Name string
|
Name string
|
||||||
|
11
delete.go
11
delete.go
@ -1,11 +0,0 @@
|
|||||||
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,6 +11,4 @@ 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,5 +1,8 @@
|
|||||||
module git.milar.in/milarin/advsql
|
module git.tordarus.net/Tordarus/advsql
|
||||||
|
|
||||||
go 1.18
|
go 1.18
|
||||||
|
|
||||||
require github.com/go-sql-driver/mysql v1.6.0
|
require (
|
||||||
|
git.tordarus.net/Tordarus/adverr v0.2.0
|
||||||
|
github.com/go-sql-driver/mysql v1.6.0
|
||||||
|
)
|
||||||
|
2
go.sum
2
go.sum
@ -1,2 +1,4 @@
|
|||||||
|
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
Normal file
59
stmt.go
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
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