1
0
mirror of https://github.com/MADTeacher/go_basics.git synced 2025-11-23 21:34:47 +02:00
Files
go_basics/part_6/6.1/golang/todo/db/db.go

95 lines
2.0 KiB
Go
Raw Normal View History

2025-06-16 11:31:09 +03:00
package db
import (
"database/sql"
"fmt"
"log"
"os"
)
type SQLiteRepository struct {
db *sql.DB
}
func createDB(pathToDB string) *sql.DB {
db, err := sql.Open("sqlite3", pathToDB)
if err != nil {
log.Fatal(err)
}
db.Exec(ProjectTabelDefinition)
db.Exec(TaskTabelDefinition)
return db
}
func NewSQLiteRepository() *SQLiteRepository {
var db *sql.DB
if _, err := os.Stat(dbName); os.IsNotExist(err) {
db = createDB(dbName)
fmt.Println("DB isn't exist")
putDefaultValuesToDB(&SQLiteRepository{
db: db,
})
} else {
db, err = sql.Open("sqlite3", dbName)
if err != nil {
log.Fatal(err)
}
fmt.Println("DB already exists")
}
return &SQLiteRepository{
db: db,
}
}
func putDefaultValuesToDB(rep *SQLiteRepository) {
firstProject, _ := rep.AddProject(Project{
Name: "Go",
Description: "Roadmap for learning Go",
})
secondProject, _ := rep.AddProject(Project{
Name: "One Year",
Description: "Tasks for the year",
})
rep.AddTask(Task{
Name: "Variable",
Description: "Learning Go build-in variables",
Priority: 1,
}, firstProject.ID)
rep.AddTask(Task{
Name: "Struct",
Description: "Learning use struct in OOP code",
Priority: 3,
}, firstProject.ID)
rep.AddTask(Task{
Name: "Goroutine",
Description: "Learning concurrent programming",
Priority: 5,
}, firstProject.ID)
rep.AddTask(Task{
Name: "DataBase",
Description: "How write app with db",
Priority: 1,
}, firstProject.ID)
rep.AddTask(Task{
Name: "PhD",
Description: "Ph.D. in Technical Sciences",
Priority: 5,
}, secondProject.ID)
rep.AddTask(Task{
Name: "Losing weight",
Description: "Exercise and eat less chocolate",
Priority: 2,
}, secondProject.ID)
rep.AddTask(Task{
Name: "Пафос и превозмогание",
Description: "10к подписчиков на канале",
Priority: 2,
}, secondProject.ID)
}
func (s *SQLiteRepository) Close() {
s.db.Close()
}