Compare commits

..

No commits in common. "main" and "v0.0.10" have entirely different histories.

7 changed files with 68 additions and 22 deletions

7
db.go
View File

@ -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

View File

@ -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

View File

@ -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
}
}

View File

@ -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
View File

@ -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
View File

@ -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
View 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)
// }