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  }