Skip to content

Instantly share code, notes, and snippets.

@6LYTH3
Created August 11, 2014 17:07
Show Gist options
  • Save 6LYTH3/f0d14a758916e73b8ed4 to your computer and use it in GitHub Desktop.
Save 6LYTH3/f0d14a758916e73b8ed4 to your computer and use it in GitHub Desktop.
Simple Data Retention with Go lang
package main
import (
"fmt"
"time"
"strconv"
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
year, month, day := time.Now().Date()
expires := strconv.Itoa(year) + "-" + strconv.Itoa(int(month)) + "-" + strconv.Itoa(day)
db, err := sql.Open("mysql", "root:admin@tcp(localhost:3306)/pcbascrew")
fmt.Println("[*] Connecting to Database ........")
checkErr(err)
defer db.Close()
// Prepare Execute for Delect Record
stmt, err := db.Prepare("DELETE FROM SCREW WHERE id=?")
checkErr(err)
// Execute the query
rows, err := db.Query("SELECT id FROM SCREW WHERE date_created < DATE_SUB(?,INTERVAL 180 DAY)",expires)
checkErr(err)
columns, err := rows.Columns()
checkErr(err)
// Make a slice for the values
values := make([]sql.RawBytes, len(columns))
scanArgs := make([]interface{}, len(values))
for i := range values {
scanArgs[i] = &values[i]
}
// Fetch rows
for rows.Next() {
err = rows.Scan(scanArgs...)
checkErr(err)
for i, col := range values {
if col != nil {
stmt.Exec(string(col))
}
fmt.Println(columns[i], ":", string(col))
}
}
}
func checkErr(err error) {
if err != nil {
panic(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment