diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..9238db2 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch file", + "type": "go", + "request": "launch", + "mode": "debug", + "program": "main.go" + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 4e768b5..16998fc 100644 --- a/README.md +++ b/README.md @@ -1 +1,13 @@ -# \ No newline at end of file +# Blog_Software +An easy to use blogging software. That's it. + +## V1 goals +- Multi-user support +- Markdown publishing + +## Longer-term goals +- Extreme customization +- Single-user ability +- Markdown previewer/editor +- Obsidian.md publishing/extension +- \ No newline at end of file diff --git a/src/db/update.go b/db/migrate.go similarity index 86% rename from src/db/update.go rename to db/migrate.go index fffa359..1def43a 100644 --- a/src/db/update.go +++ b/db/migrate.go @@ -2,8 +2,8 @@ package db import ( "database/sql" - "os" "log" + "os" ) func CheckError(e error) { @@ -12,7 +12,7 @@ func CheckError(e error) { } } -func Update(db *sql.DB, migrations []string) { +func Migrate(db *sql.DB, migrations []string) { for _, x := range migrations { data, err := os.ReadFile("./db/migrations/" + x + ".sql") CheckError(err) @@ -21,4 +21,4 @@ func Update(db *sql.DB, migrations []string) { CheckError(err) log.Print("Applied migration " + x) } -} \ No newline at end of file +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..761d164 --- /dev/null +++ b/main.go @@ -0,0 +1,40 @@ +package main + +import ( + "database/sql" + "fmt" + + _ "github.com/mattn/go-sqlite3" + dbpkg "nkeller.dev/blog_software/db" + usrpkg "nkeller.dev/blog_software/user" +) + +type Post struct { + id int + created_at int + creator_id int + title string + description string + content string + tags string +} + +func main() { + // DB and Migrations + db, err := sql.Open("sqlite3", "./db/blogging.db") + if err != nil { + panic(err) + } + defer db.Close() + migrations := [...]string{ + "1784776258", + } + dbpkg.Migrate(db, migrations[:]) + + user, err := usrpkg.Create(db, "profilelag2", "Hello") + if err != nil { + panic(err) + } + fmt.Println(user) + fmt.Printf("user: %v\n", user) +} diff --git a/post/create.go b/post/create.go new file mode 100644 index 0000000..bb9f3d9 --- /dev/null +++ b/post/create.go @@ -0,0 +1,2 @@ +package post + diff --git a/post/delete.go b/post/delete.go new file mode 100644 index 0000000..235520f --- /dev/null +++ b/post/delete.go @@ -0,0 +1 @@ +package post diff --git a/post/modify.go b/post/modify.go new file mode 100644 index 0000000..235520f --- /dev/null +++ b/post/modify.go @@ -0,0 +1 @@ +package post diff --git a/src/main.go b/src/main.go deleted file mode 100644 index 6b7d2ff..0000000 --- a/src/main.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -import ( - "database/sql" - dbpkg "nkeller.dev/blog_software/src/db" - _ "github.com/mattn/go-sqlite3" -) - -type User struct { - ID int - Name string -} - -func main() { - // DB and Migrations - db, err := sql.Open("sqlite3", "./db/blogging.db") - dbpkg.CheckError(err) - defer db.Close() - migrations := [...]string{ - "1784776258", - } - dbpkg.Update(db, migrations[:]) - -} diff --git a/user/create.go b/user/create.go new file mode 100644 index 0000000..27a2624 --- /dev/null +++ b/user/create.go @@ -0,0 +1,22 @@ +package user + +import ( + "database/sql" + "time" +) + +type User struct { + id int + created_at time.Time + name sql.NullString + username string + password string +} + +func Create(db *sql.DB, username string, password string) (*User, error) { + //TODO: Hash password, plaintext is dumb and unsafe + row := db.QueryRow("INSERT INTO users(username, password) VALUES (?, ?) RETURNING id, created_at, name, username;", username, password) + user := &User{} + err := row.Scan(&user.id, &user.created_at, &user.name, &user.username) + return user, err +} diff --git a/user/delete.go b/user/delete.go new file mode 100644 index 0000000..024f19c --- /dev/null +++ b/user/delete.go @@ -0,0 +1,13 @@ +package user + +import ( + "database/sql" + + dbpkg "nkeller.dev/blog_software/db" +) + +func Delete(db *sql.DB, id int) { + result, err := db.Exec("DELETE FROM users WHERE id = ?;", id) + dbpkg.CheckError(err) + _ = result +} \ No newline at end of file diff --git a/user/verify.go b/user/verify.go new file mode 100644 index 0000000..cb301e2 --- /dev/null +++ b/user/verify.go @@ -0,0 +1,2 @@ +package user +