1
0

Implemented getting all categories.

This commit is contained in:
Alexander Andreev 2023-05-22 05:21:53 +04:00
parent 38e5d9e4bf
commit 5095c7649d
Signed by: Arav
GPG Key ID: D22A817D95815393
3 changed files with 47 additions and 6 deletions

View File

@ -16,6 +16,8 @@ var (
//go:embed queries/categoryById.sql //go:embed queries/categoryById.sql
queryCategoryById string queryCategoryById string
//go:embed queries/categoryGetAll.sql
queryCategoryGetAll string
//go:embed queries/categoryNew.sql //go:embed queries/categoryNew.sql
queryCategoryNew string queryCategoryNew string
//go:embed queries/postGetAll.sql //go:embed queries/postGetAll.sql
@ -29,12 +31,13 @@ var (
) )
var ( var (
stmtCategoryById *sql.Stmt stmtCategoryById *sql.Stmt
stmtCategoryNew *sql.Stmt stmtCategoryGetAll *sql.Stmt
stmtPostGetAll *sql.Stmt stmtCategoryNew *sql.Stmt
stmtPostNew *sql.Stmt stmtPostGetAll *sql.Stmt
stmtPostEdit *sql.Stmt stmtPostNew *sql.Stmt
stmtPostDelete *sql.Stmt stmtPostEdit *sql.Stmt
stmtPostDelete *sql.Stmt
) )
func initDBStatements(db *sql.DB) error { func initDBStatements(db *sql.DB) error {
@ -50,6 +53,11 @@ func initDBStatements(db *sql.DB) error {
return errors.Wrap(err, "failed to prepare queryCategoryById") return errors.Wrap(err, "failed to prepare queryCategoryById")
} }
stmtCategoryGetAll, err = db.Prepare(queryCategoryGetAll)
if err != nil {
return errors.Wrap(err, "failed to prepare queryCategoryGetAll")
}
stmtCategoryNew, err = db.Prepare(queryCategoryNew) stmtCategoryNew, err = db.Prepare(queryCategoryNew)
if err != nil { if err != nil {
return errors.Wrap(err, "failed to prepare queryCategoryNew") return errors.Wrap(err, "failed to prepare queryCategoryNew")
@ -185,6 +193,34 @@ func (s *SQLiteMindflow) Posts() (posts []mindflow.Post, err error) {
return posts, nil return posts, nil
} }
func (s *SQLiteMindflow) Categories() (categories []mindflow.Category, err error) {
tx, err := s.db.Begin()
if err != nil {
return nil, err
}
defer tx.Rollback()
rows, err := tx.Stmt(stmtCategoryGetAll).Query()
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var category mindflow.Category
if err = rows.Scan(&category.ID, &category.Name); err != nil {
return nil, err
}
categories = append(categories, category)
}
tx.Commit()
return categories, nil
}
func (s *SQLiteMindflow) NewCategory(name string) (int64, error) { func (s *SQLiteMindflow) NewCategory(name string) (int64, error) {
tx, err := s.db.Begin() tx, err := s.db.Begin()
if err != nil { if err != nil {

View File

@ -0,0 +1,4 @@
SELECT
`category_id`,
`name`
FROM `category`;

View File

@ -5,6 +5,7 @@ type Mindflow interface {
Edit(post *Post) error Edit(post *Post) error
Delete(id int64) error Delete(id int64) error
Posts() ([]Post, error) Posts() ([]Post, error)
Categories() ([]Category, error)
NewCategory(name string) (int64, error) NewCategory(name string) (int64, error)
GetCategoryByID(id int64) (string, error) GetCategoryByID(id int64) (string, error)
Close() error Close() error