-
Notifications
You must be signed in to change notification settings - Fork 3
/
sqldriver.go
88 lines (74 loc) · 1.72 KB
/
sqldriver.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package cfitsio
import (
"database/sql"
"database/sql/driver"
"fmt"
)
// fitsdriver adapts a FITS table to the database/sql/driver interface
type fitsdriver struct {
}
// Open returns a new connection to the FITS table
func (drv *fitsdriver) Open(name string) (driver.Conn, error) {
f, err := Open(name, ReadOnly)
if err != nil {
return nil, err
}
hdu := f.CHDU()
tbl, ok := hdu.(*Table)
if !ok {
return nil, fmt.Errorf("cfitsio: current HDU isn't a Table")
}
conn := &fitsconn{
f: f,
t: tbl,
}
return conn, err
}
// fitsconn adapts a FITS table to the database/sql/driver Conn interface
type fitsconn struct {
f File
t *Table
}
// Prepare returns a prepared statement, bound to this connection
func (conn *fitsconn) Prepare(query string) (driver.Stmt, error) {
var stmt driver.Stmt
var err error
return stmt, err
}
// Close invalidates and potentially stops any current prepared statements
// and transactions, marking this connection as no longer in use.
func (conn *fitsconn) Close() error {
err := conn.t.Close()
if err != nil {
return err
}
err = conn.f.Close()
return err
}
// Begin starts and returns a new transaction
func (conn *fitsconn) Begin() (driver.Tx, error) {
var tx driver.Tx = &fitstx{conn}
var err error
return tx, err
}
// fitstx is a transaction on a FITS table
type fitstx struct {
conn *fitsconn
}
func (tx *fitstx) Commit() error {
if tx.conn == nil {
return fmt.Errorf("cfitsio: invalid FITS connection")
}
panic("not implemented")
}
func (tx *fitstx) Rollback() error {
if tx.conn == nil {
return fmt.Errorf("cfitsio: invalid FITS connection")
}
panic("not implemented")
}
func init() {
sql.Register("fits", &fitsdriver{})
}
var _ driver.Driver = (*fitsdriver)(nil)
// EOF