1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package storage
- import (
- "database/sql"
- "flag"
- _ "github.com/go-sql-driver/mysql"
- "log"
- )
- type Storage struct {
- DB *sql.DB
- DSN string
- truncateList []string
- }
- var Service Storage = Storage{}
- func (s *Storage) Open() error {
- var err error
- s.DB, err = sql.Open("mysql", s.DSN)
- if err == nil {
- err = s.DB.Ping()
- }
- return err
- }
- func (s *Storage) Close() {
- if s.DB != nil {
- for _, name := range s.truncateList {
- s.Truncate(name)
- }
- s.DB.Close()
- }
- s.DB = nil
- }
- func (s *Storage) AddToTruncateList(name string) {
- s.truncateList = append(s.truncateList, name)
- }
- func (s *Storage) Truncate(name string) {
- if s.DB == nil {
- panic("Cannot truncate a non-connected database.")
- }
-
- _, err := s.DB.Exec("DELETE FROM " + name)
- if err != nil {
- log.Printf("Error truncating %s: %+v\n", name, err)
- }
- }
- func (s *Storage) SetDSN(dsn string) {
- s.DSN = dsn
- }
- func init() {
- var dsn = flag.String("dsn", "root:@tcp(localhost:3306)/go_kurz", "some_user:some_pass@tcp(some_host:some_port)/some_db")
- flag.Parse()
- Service.SetDSN(*dsn)
- }
|