diff --git a/.gitignore b/.gitignore index 1b3afe7..7932178 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,4 @@ zig-out/ zig-cache/ *.core static/ -.jetzig -src/app/database/ \ No newline at end of file +.jetzig \ No newline at end of file diff --git a/src/app/database/data.db b/src/app/database/data.db new file mode 100644 index 0000000..6ba499c Binary files /dev/null and b/src/app/database/data.db differ diff --git a/src/app/views/search.zig b/src/app/views/search.zig new file mode 100644 index 0000000..17c0255 --- /dev/null +++ b/src/app/views/search.zig @@ -0,0 +1,12 @@ +const std = @import("std"); +const jetzig = @import("jetzig"); +const search = @import("../../db.zig"); + +pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { + var root = try data.object(); + const params = try request.params(); + const query = params.get("q"); + try root.put("q",query); + //try root.put("q", data.string("Welcome")); + return request.render(.ok); +} diff --git a/src/db.zig b/src/db.zig index e69de29..9690326 100644 --- a/src/db.zig +++ b/src/db.zig @@ -0,0 +1,54 @@ +const std = @import("std"); +const sql = @import("sqlite"); + +pub fn loadDb(path: []u8) !sql.sqlite.Db{ + try sql.sqlite.Db.init(.{ + .mode = sql.sqlite.Db.Mode{ .File = path}, + .open_flags = .{ + .write = true, + .create = true, + }, + .threading_mode = .MultiThread, + }); +} + +const addArtist = \\INSERT INTO artists ('artist', 'plays', 'url') VALUES (?,?) +; + +const addTrack = \\INSERT INTO tracks ('artist', 'track', 'album', 'plays', 'url') VALUES (?,?,?,?) +; + +const getArtist = \\SELECT artist, plays FROM artists WHERE artist == ? +; + +const getTrack = \\SELECT artist, track, album, plays FROM tracks WHERE track == ? +; + +const getTrackSearch = \\SELECT url FROM artists WHERE artist == ? +; + +const getArtistSearch = \\SELECT url FROM artists WHERE artist == ? +; + +pub var db = loadDb("/home/swebb/Source/zuletzt/src/app/database/data.db"); + +pub fn search(query: []const u8) !void{ + var artistSearch = try db.prepare(getArtistSearch); + defer artistSearch.deinit(); + var trackSearch = try db.prepare(getTrackSearch); + defer trackSearch.deinit(); + + const artistResults = try artistSearch.one( + struct { + artist: [128:0]u8, + plays: usize, + }, + .{}, + .{ .artist = query}, + ); + + if (artistResults) |r|{ + std.log.debug("Artist: {}, Plays: {}", .{r.name, r.plays}); + } + +} \ No newline at end of file diff --git a/src/main.zig b/src/main.zig index 9d5b43a..fea50c2 100644 --- a/src/main.zig +++ b/src/main.zig @@ -87,35 +87,35 @@ pub const jetzig_options = struct { }; pub fn main() !void { - var db = try sqlite.Db.init(.{ - .mode = sqlite.Db.Mode{ .File = "/home/swebb/Source/zuletzt/src/app/database/data.db" }, - .open_flags = .{ - .write = true, - .create = true, - }, - .threading_mode = .MultiThread, - }); + //var db = try sqlite.Db.init(.{ + // .mode = sqlite.Db.Mode{ .File = "/home/swebb/Source/zuletzt/src/app/database/data.db" }, + // .open_flags = .{ + // .write = true, + // .create = true, + // }, + // .threading_mode = .MultiThread, + //}); //const create = // \\CREATE TABLE artists ('artist', 'plays') //; - const query = - \\INSERT INTO artists ('artist', 'plays') VALUES (?,?) - ; + //const query = + // \\INSERT INTO artists ('artist', 'plays') VALUES (?,?) + //; //var build = try db.prepare(create); //defer build.deinit(); //try build.exec(.{},.{}); - var stmt = try db.prepare(query); - defer stmt.deinit(); + //var stmt = try db.prepare(query); + //defer stmt.deinit(); - try stmt.exec(.{}, .{ - .artist = "Wilco", - .plays = 2500, - }); + //try stmt.exec(.{}, .{ + // .artist = "Wilco", + // .plays = 2500, + //}); var gpa = std.heap.GeneralPurposeAllocator(.{}){};