initialize database if table doesn't exist
continuous-integration/drone/push Build is passing Details

This commit is contained in:
Steven Polley 2024-01-01 10:39:16 -07:00
parent 022327d539
commit bb4112e145
2 changed files with 35 additions and 0 deletions

View File

@ -86,3 +86,31 @@ func (conf Configuration) Connect() (*Connection, error) {
return conn, nil
}
// InitializeDatabase will check if tables exist in the database, and if not then create them.
func (conn Connection) InitializeDatabase() error {
rows, err := conn.DB.Query(`SHOW TABLES`)
if err != nil {
return fmt.Errorf("SHOW TABLES query failed: %v", err)
}
defer rows.Close()
if rows.Next() { // Table already exists, leave with no error
return nil
}
// Table does not exist, create it
_, err = conn.DB.Exec(`CREATE TABLE visit (
id int(11) NOT NULL AUTO_INCREMENT,
ip_address varchar(15) NOT NULL,
visits int(11) NOT NULL,
last_visited datetime NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;`)
if err != nil {
return fmt.Errorf("failed to create table: %v", err)
}
return nil
}

View File

@ -57,6 +57,13 @@ func init() {
log.Fatalf("failed to connect to database: %v", err)
}
// Check if database needs to be initialized (create tables)
// does nothing if tables exist
err = dbConn.InitializeDatabase()
if err != nil {
log.Fatalf("failed to initialize database: %v", err)
}
uniqueVisits, err = dbConn.GetUniqueVisits()
if err != nil {
log.Fatalf("failed to get number of unique visits from database: %v", err)