diff --git a/.gitignore b/.gitignore index 642059d..17952c7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ .idea -build-errors.log -main \ No newline at end of file +tmp diff --git a/core/nkode/nkode_sqlite.go b/core/nkode/nkode_sqlite.go deleted file mode 100644 index 324c377..0000000 --- a/core/nkode/nkode_sqlite.go +++ /dev/null @@ -1 +0,0 @@ -package nkode diff --git a/core/sql-driver/sql_driver.go b/core/sql-driver/sql_driver.go new file mode 100644 index 0000000..cef2923 --- /dev/null +++ b/core/sql-driver/sql_driver.go @@ -0,0 +1,86 @@ +package sql_driver + +import ( + "database/sql" + "fmt" + _ "github.com/mattn/go-sqlite3" // Import the SQLite3 driver + "log" +) + +func InitTables() { + db, err := sql.Open("sqlite3", "./example.db") + if err != nil { + log.Fatal(err) + } + defer db.Close() + + // Create a table + createTableSQL := ` + CREATE TABLE IF NOT EXISTS users ( + id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + name TEXT, + age INTEGER + ); + ` + _, err = db.Exec(createTableSQL) + if err != nil { + log.Fatalf("Error creating table: %s", err) + } + + // Insert data into the table + insertUserSQL := `INSERT INTO users (name, age) VALUES (?, ?)` + _, err = db.Exec(insertUserSQL, "Alice", 30) + if err != nil { + log.Fatalf("Error inserting data: %s", err) + } + + _, err = db.Exec(insertUserSQL, "Bob", 25) + if err != nil { + log.Fatalf("Error inserting data: %s", err) + } + + // Query the data + queryUserSQL := `SELECT id, name, age FROM users` + rows, err := db.Query(queryUserSQL) + if err != nil { + log.Fatalf("Error querying data: %s", err) + } + defer rows.Close() + + for rows.Next() { + var id int + var name string + var age int + err = rows.Scan(&id, &name, &age) + if err != nil { + log.Fatalf("Error scanning data: %s", err) + } + fmt.Printf("User: ID=%d, Name=%s, Age=%d\n", id, name, age) + } + + // Update data + updateUserSQL := `UPDATE users SET age = ? WHERE name = ?` + _, err = db.Exec(updateUserSQL, 35, "Alice") + if err != nil { + log.Fatalf("Error updating data: %s", err) + } + + // Verify the update + fmt.Println("After update:") + rows, err = db.Query(queryUserSQL) + if err != nil { + log.Fatalf("Error querying data: %s", err) + } + defer rows.Close() + + for rows.Next() { + var id int + var name string + var age int + err = rows.Scan(&id, &name, &age) + if err != nil { + log.Fatalf("Error scanning data: %s", err) + } + fmt.Printf("User: ID=%d, Name=%s, Age=%d\n", id, name, age) + } +} diff --git a/core/sql-driver/sql_driver_test.go b/core/sql-driver/sql_driver_test.go new file mode 100644 index 0000000..b3f2fe4 --- /dev/null +++ b/core/sql-driver/sql_driver_test.go @@ -0,0 +1,7 @@ +package sql_driver + +import "testing" + +func TestInitTables(t *testing.T) { + InitTables() +} diff --git a/go.mod b/go.mod index 8f6a6eb..b9a78fa 100644 --- a/go.mod +++ b/go.mod @@ -3,13 +3,14 @@ module go-nkode go 1.19 require ( + github.com/google/uuid v1.6.0 + github.com/mattn/go-sqlite3 v1.14.22 github.com/stretchr/testify v1.9.0 golang.org/x/crypto v0.26.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/google/uuid v1.6.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index eb14d14..815b869 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,9 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= -github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= +github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=