change db from sqlite3 to postgresql
This commit is contained in:
@@ -6,11 +6,11 @@ import (
|
||||
)
|
||||
|
||||
type ResponseModel struct {
|
||||
DB *sql.DB
|
||||
DbDriver string
|
||||
DB *sql.DB
|
||||
}
|
||||
|
||||
// TODO docstring
|
||||
// Get all the response object from the database. May throw an error if the
|
||||
// connection to the database fails.
|
||||
func (m *ResponseModel) All() ([]model.Response, error) {
|
||||
stmt := `
|
||||
SELECT url, content, fetchDate, processed
|
||||
@@ -39,7 +39,8 @@ func (m *ResponseModel) All() ([]model.Response, error) {
|
||||
return responses, nil
|
||||
}
|
||||
|
||||
// TODO docstring
|
||||
// Gets all those Response objects where the processed column is set to false.
|
||||
// May throw an error if the connection to the database fails.
|
||||
func (m *ResponseModel) UnprocessedUrls() ([]string, error) {
|
||||
stmt := `
|
||||
SELECT url
|
||||
@@ -69,12 +70,28 @@ func (m *ResponseModel) UnprocessedUrls() ([]string, error) {
|
||||
return urls, nil
|
||||
}
|
||||
|
||||
// TODO docstring
|
||||
// Checks if a given url exits in the database as a response. This may throw an
|
||||
// error if the connection to the database fails.
|
||||
func (m *ResponseModel) UrlExists(url string) (bool, error) {
|
||||
stmt := `
|
||||
SELECT count(url) > 0 FROM responses WHERE url = $1
|
||||
`
|
||||
|
||||
var result bool
|
||||
row := m.DB.QueryRow(stmt, url)
|
||||
err := row.Scan(&result)
|
||||
|
||||
return result, err
|
||||
}
|
||||
|
||||
// Gets a certain Response object by the unique url. This may throw an error if
|
||||
// there does not exist an response with the given url or the connection to the
|
||||
// database fails.
|
||||
func (m *ResponseModel) GetByUrl(url string) (model.Response, error) {
|
||||
stmt := `
|
||||
SELECT url, content, fetchDate, processed
|
||||
FROM responses
|
||||
WHERE url = ?
|
||||
WHERE url = $1
|
||||
`
|
||||
|
||||
res := model.Response{}
|
||||
@@ -84,19 +101,33 @@ func (m *ResponseModel) GetByUrl(url string) (model.Response, error) {
|
||||
return res, err
|
||||
}
|
||||
|
||||
// TODO docstring
|
||||
func (m *ResponseModel) Insert(url string, content string) error {
|
||||
// Inserts a new response object into the database given the url and response
|
||||
// body. This may fail on an unique contraint of the url or the connection to
|
||||
// the database.
|
||||
func (m *ResponseModel) Insert(url string, content []byte) error {
|
||||
// insert response
|
||||
stmt := `INSERT INTO responses (url, content) VALUES (?, ?)`
|
||||
stmt := `INSERT INTO responses (url, content) VALUES ($1, $2)`
|
||||
_, err := m.DB.Exec(stmt, url, content)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// TODO docstring
|
||||
// Updates a response object in the database using the url of the given response
|
||||
// object as the id. This may throw an error if connection to the database
|
||||
// fails.
|
||||
func (m *ResponseModel) Update(res *model.Response) error {
|
||||
// insert response
|
||||
stmt := `UPDATE responses SET content = $1, fetchDate = $2, processed = $3 WHERE url = $4`
|
||||
_, err := m.DB.Exec(stmt, res.Content, res.FetchDate, res.Processed, res.Url)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// Sets the processed column of a certain response entry in the database, given
|
||||
// an url, to true. This may fail if the connection to the database fails.
|
||||
func (m *ResponseModel) Processed(url string) error {
|
||||
// insert response
|
||||
stmt := `UPDATE responses SET processed = true WHERE url = ?`
|
||||
stmt := `UPDATE responses SET processed = true WHERE url = $1`
|
||||
_, err := m.DB.Exec(stmt, url)
|
||||
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user