61 lines
1.1 KiB
Go
61 lines
1.1 KiB
Go
package article
|
|
|
|
import (
|
|
"database/sql"
|
|
"fmt"
|
|
)
|
|
|
|
type ArticleRepository struct{}
|
|
|
|
func NewArticleRepository() IArticleRepository {
|
|
return &ArticleRepository{}
|
|
}
|
|
|
|
func (ArticleRepository) CreateArticle(tx *sql.Tx, data ArticleCreateModel) error {
|
|
query := `
|
|
INSERT INTO articles(uuid, title, content)
|
|
VALUES ($1, $2, $3);
|
|
`
|
|
|
|
_, err := tx.Exec(query, data.Uuid, data.Title, data.Content)
|
|
return err
|
|
}
|
|
|
|
func (ArticleRepository) GetArticlesByTitle(tx *sql.Tx, title string) ([]ArticleModel, error) {
|
|
fmt.Println(title, " ------------------")
|
|
query := `
|
|
SELECT uuid, title, content
|
|
FROM articles
|
|
WHERE title LIKE $1 || '%'
|
|
LIMIT 10;
|
|
`
|
|
|
|
rows, err := tx.Query(query, title)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
articles := []ArticleModel{}
|
|
for rows.Next() {
|
|
var a ArticleModel
|
|
|
|
err = rows.Scan(&a.Uuid, &a.Title, &a.Content)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
articles = append(articles, a)
|
|
}
|
|
|
|
fmt.Println(articles)
|
|
|
|
return articles, nil
|
|
}
|
|
|
|
func (ArticleRepository) DeleteAllArticles(tx *sql.Tx) error {
|
|
query := `DELETE FROM articles;`
|
|
|
|
_, err := tx.Exec(query)
|
|
return err
|
|
}
|