1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package database
- import (
- "database/sql"
- "gorm.io/gorm"
- )
- type MysqlDataBase struct {
- db *gorm.DB
- }
- func NewGORMAdapter(db *gorm.DB) *MysqlDataBase {
- return &MysqlDataBase{db: db}
- }
- func (a *MysqlDataBase) Begin() (Tx, error) {
- return &GORMTxAdapter{tx: a.db.Begin()}, nil
- }
- func (a *MysqlDataBase) Commit() error {
- return a.db.Commit().Error
- }
- func (a *MysqlDataBase) Rollback() error {
- return a.db.Rollback().Error
- }
- func (a *MysqlDataBase) Exec(query string, args ...interface{}) (sql.Result, error) {
- res := a.db.Exec(query, args...)
- return &gormResultAdapter{res}, res.Error
- }
- func (a *MysqlDataBase) Query(query string, args ...interface{}) (*sql.Rows, error) {
- rows, err := a.db.Raw(query, args...).Rows()
- if err != nil {
- return nil, err
- }
- return rows, nil
- }
- type GORMTxAdapter struct {
- tx *gorm.DB
- }
- func (t *GORMTxAdapter) Commit() error {
- return t.tx.Commit().Error
- }
- func (t *GORMTxAdapter) Rollback() error {
- return t.tx.Rollback().Error
- }
- func (t *GORMTxAdapter) Exec(query string, args ...interface{}) (sql.Result, error) {
- res := t.tx.Exec(query, args...)
- return &gormResultAdapter{res}, res.Error
- }
- func (t *GORMTxAdapter) Query(query string, args ...interface{}) (*sql.Rows, error) {
- rows, err := t.tx.Raw(query, args...).Rows()
- if err != nil {
- return nil, err
- }
- return rows, nil
- }
- type gormResultAdapter struct {
- res *gorm.DB
- }
- func (r *gormResultAdapter) LastInsertId() (int64, error) {
- return r.res.RowsAffected, nil
- }
- func (r *gormResultAdapter) RowsAffected() (int64, error) {
- return r.res.RowsAffected, nil
- }
- func init() {
- Register("mysql", MY)
- }
|