package dbhandle
import (
"database/sql"
"fmt"
"os"
"path/filepath"
_ "github.com/mattn/go-sqlite3"
)
// full path to the local database that has been created by `CreateLocalDB`
var dbpath string
// Creates a local database file in the same directory
// as executable if does not exist already. Creates a table with
// such structure: (id PRIMARY KEY, title TEXT, text TEXT), which
// represents underlying fields of `RandomData`
func CreateLocalDB ( dbName string , newTableName string ) ( * DB , error ) {
// double check if dbName is actually just a name, not a path
dbName = filepath . Base ( dbName )
executablePath , err := os . Executable ( )
if err != nil {
return nil , err
}
exeDir := filepath . Dir ( executablePath )
dbpath = filepath . Join ( exeDir , dbName )
// create db if does not exist
dbfile , err := os . OpenFile ( dbpath , os . O_CREATE , os . ModePerm )
if err != nil {
return nil , err
}
dbfile . Close ( )
// create table that suits `RandomData` struct
db , err := sql . Open ( drivername , dbpath )
if err != nil {
return nil , err
}
_ , err = db . Exec ( fmt . Sprintf ( "CREATE TABLE IF NOT EXISTS %s (id INTEGER PRIMARY KEY, title TEXT, text TEXT, date_created INTEGER, last_updated INTEGER)" , newTableName ) )
if err != nil {
return nil , err
}
tableName = newTableName
return & DB { db } , nil
}