github.com/movsb/taorm@v0.0.0-20201209183410-91bafb0b22a6/mimic/mimic.go (about) 1 package mimic 2 3 import ( 4 "database/sql" 5 "database/sql/driver" 6 "io" 7 ) 8 9 func init() { 10 sql.Register("mimic", &Driver{}) 11 } 12 13 // Driver implements driver.Driver. 14 type Driver struct { 15 } 16 17 var _ driver.Driver = &Driver{} 18 19 // Open ... 20 func (d *Driver) Open(name string) (driver.Conn, error) { 21 return &Conn{}, nil 22 } 23 24 // Conn implements driver.Conn. 25 type Conn struct { 26 } 27 28 var _ driver.Conn = &Conn{} 29 30 // Prepare ... 31 func (c *Conn) Prepare(query string) (driver.Stmt, error) { 32 return &Stmt{}, nil 33 } 34 35 // Close ... 36 func (c *Conn) Close() error { 37 return nil 38 } 39 40 // Begin ... 41 func (c *Conn) Begin() (driver.Tx, error) { 42 panic("tx not supported") 43 } 44 45 // Stmt implements driver.Stmt. 46 type Stmt struct { 47 } 48 49 var _ driver.Stmt = &Stmt{} 50 51 // Close ... 52 func (s *Stmt) Close() error { 53 return nil 54 } 55 56 // NumInput ... 57 func (s *Stmt) NumInput() int { 58 return -1 59 } 60 61 // Exec ... 62 func (s *Stmt) Exec(args []driver.Value) (driver.Result, error) { 63 return &Result{}, nil 64 } 65 66 // Query ... 67 func (s *Stmt) Query(args []driver.Value) (driver.Rows, error) { 68 return &Rows{}, nil 69 } 70 71 type Result struct { 72 } 73 74 var _ driver.Result = &Result{} 75 76 func (r *Result) LastInsertId() (int64, error) { 77 return 1, nil 78 } 79 80 func (r *Result) RowsAffected() (int64, error) { 81 return 0, nil 82 } 83 84 type Rows struct { 85 index int 86 } 87 88 var _ driver.Rows = &Rows{} 89 90 func (r *Rows) Columns() []string { 91 return _columns 92 } 93 94 func (r *Rows) Close() error { 95 return nil 96 } 97 98 func (r *Rows) Next(dest []driver.Value) error { 99 if r.index >= len(_values) { 100 return io.EOF 101 } 102 for i, n := 0, len(dest); i < n; i++ { 103 dest[i] = _values[r.index][i] 104 } 105 r.index++ 106 return nil 107 }