pain and misery

This commit is contained in:
Samuel Webb 2024-04-09 18:01:35 -04:00
parent 894e562400
commit 62ec4dc3ab
3 changed files with 45 additions and 48 deletions

Binary file not shown.

View file

@ -1,54 +1,17 @@
const std = @import("std"); pub const addArtist = \\INSERT INTO artists ('artist', 'plays', 'url') VALUES (?,?)
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 (?,?,?,?) pub const addTrack = \\INSERT INTO tracks ('artist', 'track', 'album', 'plays', 'url') VALUES (?,?,?,?)
; ;
const getArtist = \\SELECT artist, plays FROM artists WHERE artist == ? pub const getArtist = \\SELECT artist, plays FROM artists WHERE artist == ?
; ;
const getTrack = \\SELECT artist, track, album, plays FROM tracks WHERE track == ? pub const getTrack = \\SELECT artist, track, album, plays FROM tracks WHERE track == ?
; ;
const getTrackSearch = \\SELECT url FROM artists WHERE artist == ? pub const getTrackSearch = \\SELECT url FROM artists WHERE artist == ?
; ;
const getArtistSearch = \\SELECT artist, plays FROM artists WHERE artist == ? pub const getArtistSearch = \\SELECT artist, plays FROM artists WHERE artist LIKE '%' || ? || '%'
; ;
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});
}
}

View file

@ -1,12 +1,46 @@
const std = @import("std"); const std = @import("std");
const jetzig = @import("jetzig"); const jetzig = @import("jetzig");
const search = @import("../../db.zig"); const queries = @import("../lib/db.zig");
const sqlite = @import("sqlite");
pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View {
var root = try data.object(); _ = data;
const allocator = std.heap.page_allocator;
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 root = try data.object();
const params = try request.params(); const params = try request.params();
const query = params.get("q"); const query: ?[]const u8 = if (params.get("q")) |param| param.string.value else null;
try root.put("q",query); if (query != null){
// sql.search(query, db);
var artistSearch = try db.prepare(queries.getArtistSearch);
defer artistSearch.deinit();
const artistResults = try artistSearch.all(
struct{
artist: []u8,
plays: usize,
},
allocator,
.{},
.{ .artist = query},
);
for (artistResults) |r|{
std.log.debug("artist: {s}, Plays: {}", .{r.artist, r.plays});
//std.log.debug("{s}", .{r});
}
} else{
return request.render(.bad_request);
}
//const query = params.get("q");
//try root.put("q",query);
//try root.put("q", data.string("Welcome")); //try root.put("q", data.string("Welcome"));
return request.render(.ok); return request.render(.ok);
} }