From 46f0b5038c76c10b547873104a5d92b3e9c75aca Mon Sep 17 00:00:00 2001 From: Samuel Webb Date: Sun, 7 Apr 2024 16:29:33 -0400 Subject: [PATCH 1/9] Update to ZMPL v2 --- src/app/views/root.zig | 7 +++---- src/app/views/root/_content.zmpl | 5 +++-- src/app/views/root/index.zmpl | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/app/views/root.zig b/src/app/views/root.zig index 0fa146c..d567fc5 100644 --- a/src/app/views/root.zig +++ b/src/app/views/root.zig @@ -1,3 +1,4 @@ +const std = @import("std"); const jetzig = @import("jetzig"); /// `src/app/views/root.zig` represents the root URL `/` @@ -18,7 +19,7 @@ pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { var root = try data.object(); // Add a string to the root object. - try root.put("message", data.string("Welcome to Jetzig!")); + try root.put("welcome_message", data.string("Welcome to Jetzig!")); // Request params have the same type as a `data.object()` so they can be inserted them // directly into the response data. Fetch `http://localhost:8080/?message=hello` to set the @@ -26,9 +27,7 @@ pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { // present. const params = try request.params(); - if (params.get("message")) |value| { - try root.put("message_param", value); - } + try root.put("message_param", params.get("message")); // Set arbitrary response headers as required. `content-type` is automatically assigned for // HTML, JSON responses. diff --git a/src/app/views/root/_content.zmpl b/src/app/views/root/_content.zmpl index 088ab6b..89ce5ae 100644 --- a/src/app/views/root/_content.zmpl +++ b/src/app/views/root/_content.zmpl @@ -1,5 +1,6 @@ -

{.message}

+@args message: *ZmplValue +

{{message}}

@@ -15,6 +16,6 @@
Search for an artist, album, or song: - +
diff --git a/src/app/views/root/index.zmpl b/src/app/views/root/index.zmpl index 9473e7a..38e3ef7 100644 --- a/src/app/views/root/index.zmpl +++ b/src/app/views/root/index.zmpl @@ -11,11 +11,11 @@
-

{.message_param}

+

{{.message_param}}

- @partial root/content + @partial root/content(message: .welcome_message)
From f1f1072a18a490486b785387113d387429978815 Mon Sep 17 00:00:00 2001 From: mitteneer Date: Mon, 8 Apr 2024 20:18:40 -0400 Subject: [PATCH 2/9] Begin building views --- public/styles.css | 19 +++++++++++++++++-- src/app/views/root/_content.zmpl | 18 ------------------ src/app/views/root/_graph.zmpl | 0 src/app/views/root/_header.zmpl | 6 ++++++ src/app/views/root/_history.zmpl | 0 src/app/views/root/_random.zmpl | 0 src/app/views/root/_recent.zmpl | 0 src/app/views/root/_top.zmpl | 31 +++++++++++++++++++++++++++++++ src/app/views/root/index.zmpl | 10 ++-------- src/app/views/search/index.zmpl | 3 +++ src/app/views/stats.zig | 7 +++++++ src/app/views/stats/index.zmpl | 3 +++ 12 files changed, 69 insertions(+), 28 deletions(-) delete mode 100644 src/app/views/root/_content.zmpl create mode 100644 src/app/views/root/_graph.zmpl create mode 100644 src/app/views/root/_header.zmpl create mode 100644 src/app/views/root/_history.zmpl create mode 100644 src/app/views/root/_random.zmpl create mode 100644 src/app/views/root/_recent.zmpl create mode 100644 src/app/views/root/_top.zmpl create mode 100644 src/app/views/search/index.zmpl create mode 100644 src/app/views/stats.zig create mode 100644 src/app/views/stats/index.zmpl diff --git a/public/styles.css b/public/styles.css index 1755d47..afdbce9 100644 --- a/public/styles.css +++ b/public/styles.css @@ -3,8 +3,23 @@ * * */ + @import url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap'); -.message { - font-weight: bold; +.title { + font-family: 'Roboto'; font-size: 3rem; + font-weight: 500; + margin-left: 20px; + margin-right: 40px; + margin-top: 20px; +} + +.header-link{ + font-family: 'Roboto'; + font-size: 1.5rem; + margin-right: 20px; +} + +#replaceMe{ + font-family:'Courier New'; } diff --git a/src/app/views/root/_content.zmpl b/src/app/views/root/_content.zmpl deleted file mode 100644 index 6d3a665..0000000 --- a/src/app/views/root/_content.zmpl +++ /dev/null @@ -1,18 +0,0 @@ -// Renders the `message` response data value. -

{.message}

- -
- -
- - - - -
- -
Visit jetzig.dev to get started. -
Join our Discord server and introduce yourself:
-
- https://discord.gg/eufqssz7X6 -
-
diff --git a/src/app/views/root/_graph.zmpl b/src/app/views/root/_graph.zmpl new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/root/_header.zmpl b/src/app/views/root/_header.zmpl new file mode 100644 index 0000000..3362c8f --- /dev/null +++ b/src/app/views/root/_header.zmpl @@ -0,0 +1,6 @@ +Zuletzt +Artists +Albums +Tracks +Stats +
\ No newline at end of file diff --git a/src/app/views/root/_history.zmpl b/src/app/views/root/_history.zmpl new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/root/_random.zmpl b/src/app/views/root/_random.zmpl new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/root/_recent.zmpl b/src/app/views/root/_recent.zmpl new file mode 100644 index 0000000..e69de29 diff --git a/src/app/views/root/_top.zmpl b/src/app/views/root/_top.zmpl new file mode 100644 index 0000000..1ce9914 --- /dev/null +++ b/src/app/views/root/_top.zmpl @@ -0,0 +1,31 @@ +@html { + +} +
+
+Top: +Artist +Album +Track +
+ +
+of: +Day +Week +Month +3 Months +6 Months +Current Year +365 days +All Time +
+ + + +hyello + + +
diff --git a/src/app/views/root/index.zmpl b/src/app/views/root/index.zmpl index cccb8d8..ea52da6 100644 --- a/src/app/views/root/index.zmpl +++ b/src/app/views/root/index.zmpl @@ -8,13 +8,7 @@ -
- // If present, renders the `message_param` response data value, add `?message=hello` to the - // URL to see the output: -

{.message_param}

- - // Renders `src/app/views/root/_content.zmpl` with the same template data available: -
{^root/content}
-
+ @partial root/header + @partial root/top diff --git a/src/app/views/search/index.zmpl b/src/app/views/search/index.zmpl new file mode 100644 index 0000000..76457d0 --- /dev/null +++ b/src/app/views/search/index.zmpl @@ -0,0 +1,3 @@ +
+ Content goes here +
diff --git a/src/app/views/stats.zig b/src/app/views/stats.zig new file mode 100644 index 0000000..4fac587 --- /dev/null +++ b/src/app/views/stats.zig @@ -0,0 +1,7 @@ +const std = @import("std"); +const jetzig = @import("jetzig"); + +pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { + _ = data; + return request.render(.ok); +} diff --git a/src/app/views/stats/index.zmpl b/src/app/views/stats/index.zmpl new file mode 100644 index 0000000..76457d0 --- /dev/null +++ b/src/app/views/stats/index.zmpl @@ -0,0 +1,3 @@ +
+ Content goes here +
From dc959607f916a6db924fa603828ba3c2202674a8 Mon Sep 17 00:00:00 2001 From: Samuel Webb Date: Mon, 8 Apr 2024 20:19:24 -0400 Subject: [PATCH 3/9] Building db stuff --- .gitignore | 3 +-- src/app/database/data.db | Bin 0 -> 8192 bytes src/app/views/search.zig | 12 +++++++++ src/db.zig | 54 +++++++++++++++++++++++++++++++++++++++ src/main.zig | 34 ++++++++++++------------ 5 files changed, 84 insertions(+), 19 deletions(-) create mode 100644 src/app/database/data.db create mode 100644 src/app/views/search.zig 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 0000000000000000000000000000000000000000..6ba499c9458a58ca7ba31db1d16cf47b60c79684 GIT binary patch literal 8192 zcmeI%F-yZh6bJCTiwX+y3~DPB>02ZUqJ#YaZ9^stMHA>C4pB~Xk~SqdkbV|dXFq{% z4vzg8{Q!Oduh?#aWN;Av@9uGTk2gGi>qQqmZ4}+*#V|2+#CCqrtCDa+9f~ zFuFA5;t;`Q*oi}mJKbJLiy|HR<1Cq!{xSLACI85kZMG^~Ot$1yzR4H)wE0|ZRU8`a z5P$##AOHafKmY;|fB*y_0D*rZu;DqPzWzSY*=;Uo?COuk_G*qe;GgGubWcH{hh;u; zcO9|sQ2#NbK%0rTV>{SKoGL~Alp>|d+O{K3otZ7sAf5m0N2btYRoWT%ewy Date: Mon, 8 Apr 2024 22:58:30 -0400 Subject: [PATCH 4/9] Update all radios in _top.zmpl --- src/app/database/data.db | Bin 8192 -> 8192 bytes src/{ => app/lib}/db.zig | 2 +- src/app/views/root/_top.zmpl | 27 +++++++++++---------------- 3 files changed, 12 insertions(+), 17 deletions(-) rename src/{ => app/lib}/db.zig (94%) diff --git a/src/app/database/data.db b/src/app/database/data.db index 6ba499c9458a58ca7ba31db1d16cf47b60c79684..0601b68b0b1a1f2588d0d5b815e6847fe1eddea1 100644 GIT binary patch delta 262 zcmZp0XmFSyEvUr6z`z8=Fu*iX$CzJDglA-yq$&iL6lE5q z7V85=w80|UlOM{<`-+RQFv-d@EBKe^C^%=9RO$m6+8~C!2*?VC6F~K;3jP@i!Ko0< bsoMS-+8~agAPbYYBP34G!c;1XnJ66ZV;o|%)J z&;NoUdSYRCpr9BtlPcpE@65b(1?Qs7+~WK^UQuQyS!M -#myHeader { background-color: lightblue; color: black; padding: 40px; text-align: center;} - -}
Top: Artist -Album -Track +Album +Track
of: -Day -Week -Month -3 Months -6 Months -Current Year -365 days -All Time +Day +Week +Month +3 Months +6 Months +Current Year +365 days +All Time
-hyello +hyello
From 62ec4dc3ab86a59780341dff037f33f382427323 Mon Sep 17 00:00:00 2001 From: Samuel Webb Date: Tue, 9 Apr 2024 18:01:35 -0400 Subject: [PATCH 5/9] pain and misery --- src/app/database/data.db | Bin 8192 -> 8192 bytes src/app/lib/db.zig | 51 ++++++--------------------------------- src/app/views/search.zig | 42 +++++++++++++++++++++++++++++--- 3 files changed, 45 insertions(+), 48 deletions(-) diff --git a/src/app/database/data.db b/src/app/database/data.db index 0601b68b0b1a1f2588d0d5b815e6847fe1eddea1..9eabb42cf6881a7cf42bb7f3a78b6c44ae6ceb12 100644 GIT binary patch delta 77 zcmZp0XmFSy&8R$4#+gxhW5PmyVFm^UHhzC5{ Date: Tue, 9 Apr 2024 22:29:45 -0400 Subject: [PATCH 6/9] Make some allocator changes --- src/app/views/search.zig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/app/views/search.zig b/src/app/views/search.zig index 47bfda8..df0a8eb 100644 --- a/src/app/views/search.zig +++ b/src/app/views/search.zig @@ -5,7 +5,10 @@ const sqlite = @import("sqlite"); pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { _ = data; - const allocator = std.heap.page_allocator; + var gpa = std.heap.GeneralPurposeAllocator(.{}){}; + const allocator = gpa.allocator(); + var arena = std.heap.ArenaAllocator.init(allocator); + defer arena.deinit(); var db = try sqlite.Db.init(.{ .mode = sqlite.Db.Mode{ .File = "/home/swebb/Source/zuletzt/src/app/database/data.db" }, .open_flags = .{ @@ -27,7 +30,7 @@ pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { artist: []u8, plays: usize, }, - allocator, + arena.allocator(), .{}, .{ .artist = query}, ); From 75a63a19fcd42c7cae1599a658db2ec63e424117 Mon Sep 17 00:00:00 2001 From: mitteneer Date: Wed, 10 Apr 2024 16:03:35 -0400 Subject: [PATCH 7/9] Begin HTML output --- build.zig | 4 ++-- src/app/views/search.zig | 25 +++++++++++++------------ src/app/views/search/index.zmpl | 18 +++++++++++++++--- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/build.zig b/build.zig index e488390..88fed1c 100644 --- a/build.zig +++ b/build.zig @@ -15,7 +15,7 @@ pub fn build(b: *std.Build) !void { // Example dependency: const iguanas_dep = b.dependency("iguanas", .{ .optimize = optimize, .target = target }); exe.root_module.addImport("iguanas", iguanas_dep.module("iguanas")); - + const sqlite = b.dependency("sqlite", .{ .target = target, .optimize = optimize, @@ -28,7 +28,7 @@ pub fn build(b: *std.Build) !void { // All dependencies **must** be added to imports above this line. - try jetzig.jetzigInit(b, exe, .{.zmpl_version = .v2}); + try jetzig.jetzigInit(b, exe, .{ .zmpl_version = .v2 }); b.installArtifact(exe); diff --git a/src/app/views/search.zig b/src/app/views/search.zig index df0a8eb..f439a8a 100644 --- a/src/app/views/search.zig +++ b/src/app/views/search.zig @@ -4,7 +4,7 @@ const queries = @import("../lib/db.zig"); const sqlite = @import("sqlite"); pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { - _ = data; + var root = try data.array(); var gpa = std.heap.GeneralPurposeAllocator(.{}){}; const allocator = gpa.allocator(); var arena = std.heap.ArenaAllocator.init(allocator); @@ -16,30 +16,31 @@ pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { .create = true, }, .threading_mode = .MultiThread, - }); - //var root = try data.object(); + }); const params = try request.params(); - const query: ?[]const u8 = if (params.get("q")) |param| param.string.value else null; - if (query != null){ - // sql.search(query, db); + const queryOrNull: ?[]const u8 = if (params.get("q")) |param| param.string.value else null; + if (queryOrNull) |query| { + // sql.search(query, db); var artistSearch = try db.prepare(queries.getArtistSearch); defer artistSearch.deinit(); const artistResults = try artistSearch.all( - struct{ + struct { artist: []u8, - plays: usize, + url: usize, }, arena.allocator(), .{}, - .{ .artist = query}, + .{ .artist = query }, ); - for (artistResults) |r|{ - std.log.debug("artist: {s}, Plays: {}", .{r.artist, r.plays}); + for (artistResults) |r| { + std.log.debug("artist: {s}, url: {s}", .{ r.artist, r.url }); + root.append(data.string(r.artist)); + root.append(data.string(r.url)); //std.log.debug("{s}", .{r}); } - } else{ + } else { return request.render(.bad_request); } //const query = params.get("q"); diff --git a/src/app/views/search/index.zmpl b/src/app/views/search/index.zmpl index 76457d0..129b098 100644 --- a/src/app/views/search/index.zmpl +++ b/src/app/views/search/index.zmpl @@ -1,3 +1,15 @@ -
- Content goes here -
+ + + + + + + + @zig { + for (0..) + + + + } + +
ArtistAlbumTrack
\ No newline at end of file From 8f3481590465eaa1e8910cb28f9998f0a5006d95 Mon Sep 17 00:00:00 2001 From: Samuel Webb Date: Wed, 10 Apr 2024 23:48:22 -0400 Subject: [PATCH 8/9] Update Search view --- build.zig.zon | 24 ++++++++++-------------- src/app/lib/db.zig | 2 +- src/app/views/search.zig | 6 +++--- src/app/views/search/index.zmpl | 17 ++++++++++------- 4 files changed, 24 insertions(+), 25 deletions(-) diff --git a/build.zig.zon b/build.zig.zon index 578092d..ff7ee12 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -14,20 +14,16 @@ // `zig build --fetch` can be used to fetch all dependencies of a package, recursively. // Once all dependencies are fetched, `zig build` no longer requires // internet connectivity. - .dependencies = .{ - .jetzig = .{ - .url = "https://github.com/jetzig-framework/jetzig/archive/68ca4d3bbad05880e6e38fc6d10e7a24e772081e.tar.gz", - .hash = "122047ebabab1dfe1bb7f96ffdac98410ffb4850b06dc6b1670ce74aaeaa49bdc08e", - }, - .iguanas = .{ - .url = "https://github.com/jetzig-framework/iguanas/archive/89c2abf29de0bc31054a9a6feac5a6a83bab0459.tar.gz", - .hash = "12202fd319a5ab4e124b00e8ddea474d07c19c4e005d77b6c29fc44860904ea01a5c", - }, - .sqlite = .{ - .url = "https://github.com/vrischmann/zig-sqlite/archive/6af21bb.tar.gz", - .hash = "12202799861d92c7880d1a74f95be099752d7f0420a0c9628dc923ca2b1a22b7bda8", - } - }, + .dependencies = .{ .jetzig = .{ + .url = "https://github.com/jetzig-framework/jetzig/archive/88abe2243d87b28ad110c5fe9fe90b716a6c6583.tar.gz", + .hash = "12200d15cef72d4c37a01c930db53c3ffafdc05142462afddeab818701a0291327d1", + }, .iguanas = .{ + .url = "https://github.com/jetzig-framework/iguanas/archive/89c2abf29de0bc31054a9a6feac5a6a83bab0459.tar.gz", + .hash = "12202fd319a5ab4e124b00e8ddea474d07c19c4e005d77b6c29fc44860904ea01a5c", + }, .sqlite = .{ + .url = "https://github.com/vrischmann/zig-sqlite/archive/6af21bb.tar.gz", + .hash = "12202799861d92c7880d1a74f95be099752d7f0420a0c9628dc923ca2b1a22b7bda8", + } }, .paths = .{ // This makes *all* files, recursively, included in this package. It is generally // better to explicitly list the files and directories instead, to insure that diff --git a/src/app/lib/db.zig b/src/app/lib/db.zig index bb75239..90f8e8a 100644 --- a/src/app/lib/db.zig +++ b/src/app/lib/db.zig @@ -13,5 +13,5 @@ pub const getTrack = \\SELECT artist, track, album, plays FROM tracks WHERE trac pub const getTrackSearch = \\SELECT url FROM artists WHERE artist == ? ; -pub const getArtistSearch = \\SELECT artist, plays FROM artists WHERE artist LIKE '%' || ? || '%' +pub const getArtistSearch = \\SELECT artist, url FROM artists WHERE artist LIKE '%' || ? || '%' ; \ No newline at end of file diff --git a/src/app/views/search.zig b/src/app/views/search.zig index f439a8a..5d9a5c6 100644 --- a/src/app/views/search.zig +++ b/src/app/views/search.zig @@ -27,7 +27,7 @@ pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { const artistResults = try artistSearch.all( struct { artist: []u8, - url: usize, + url: []u8, }, arena.allocator(), .{}, @@ -36,8 +36,8 @@ pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { for (artistResults) |r| { std.log.debug("artist: {s}, url: {s}", .{ r.artist, r.url }); - root.append(data.string(r.artist)); - root.append(data.string(r.url)); + try root.append(data.string(r.artist)); + try root.append(data.string(r.url)); //std.log.debug("{s}", .{r}); } } else { diff --git a/src/app/views/search/index.zmpl b/src/app/views/search/index.zmpl index 129b098..67ad7ea 100644 --- a/src/app/views/search/index.zmpl +++ b/src/app/views/search/index.zmpl @@ -4,12 +4,15 @@ Album Track - - @zig { - for (0..) - - - + @zig ZIG + for (zmpl.items(.array), 0..) |u,i| { + if(@mod(i,2)==0){ + + {{u}} + {{i}} + + + } } - + ZIG \ No newline at end of file From fa4c3a6eff270ff4431e35808208221a065a3068 Mon Sep 17 00:00:00 2001 From: Samuel Webb Date: Thu, 11 Apr 2024 17:22:24 -0400 Subject: [PATCH 9/9] Implement album and track searching --- .gitignore | 3 ++- src/app/database/data.db | Bin 8192 -> 16384 bytes src/app/lib/db.zig | 11 ++++++++--- src/app/views/search.zig | 6 ++++-- src/app/views/search/index.zmpl | 10 ++++------ 5 files changed, 18 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 7932178..9f6d7b4 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ zig-out/ zig-cache/ *.core static/ -.jetzig \ No newline at end of file +.jetzig +src/app/database/data.db-journal \ No newline at end of file diff --git a/src/app/database/data.db b/src/app/database/data.db index 9eabb42cf6881a7cf42bb7f3a78b6c44ae6ceb12..fa37ab7169d9ab40592d86dcc9c906a28a52db95 100644 GIT binary patch literal 16384 zcmeI%&rTCT7y$6uEkoN7I^tL>HVwl+E3CTPEs}6B2&5Vm1Zf35nFU5zU3Tm4R>d3d zVB!mSF!4g7kKh9sV|)fZn0W93{C3;Qp97eXc=3aD_xrwCW@dk!zG?ODoE=K>$n&?X zP?X6jqA29L5QLCX_;kRh{gZ@Xf3CC#j<}DKD~~^QGn*tbyCk#A-m;z}p2i^*Kmim$ z0Te(16hHwKKmim$0TgHnJXDgod|uhfhSsVhEkCq_FlgP>nWf59ts-hu({mNkDvFE6 zx?^nz#Y>{tEI~BT@STBlt#ZExan$<`q-XEcDmN=jBg=_ouD4g&Nj4X7RvTM^6<<3J zP9N7`_INOw{m(Kmd9=pCd13#PC-^TetNXVV`qtW$pm|Lk*jBR!+lqtZx7E!qlTOw} z*emGG%WRo-u`ldh=FQ*#p5UeMPf-8`Pyhu`00mG01yBG5Pyhu`;NJ^~vs4`}rj%c| zZFfV=`1V%dxq6gnt%TJ{Cn5c3D2M0DhEdy;QY>tWs+55qCECKK7A5DhR4w$S5@O-G zBWCPyTZcf40``Lp9rtRdd#IZ0O{G7s*v^`#$JbF#RlSr-e1m1g%4YPPeKqv$dUIhd zu4t`FE=PI3kQy_Ls_S`m>FcdKEX)rr-p!^-l3gI|0{h9nvJdPvd&(9MJ%lL=pa2S> z01BW03ZMWApa2S>01EsU0_PQ4;C)Ipw0uVffoT|eJ5~W8vxm@^q=S4=neiGMa4xXz zH|nM_9%ovdsY9K#$VZgwGxh1L>H?m_F~V%OKR| zy+$Ba(E)1=D^+`|?!YmC=WdurS#PFVl&a?vG|vl4bXHJt*G@$1MUa)(6Z-WsEpa2S>01BW03ZMWApa2S>01Eu)0!*Qt zXVXh^y#%KLa08F7mPvmn9p=S!)P6(9?uM4_mY~Itdhm8WLFqL^VgXx7eX}O}ZE#cv^9%ovVWfQcQ=hG`vzLb6m UTK{I0Rpat(;J`#BX#ShgZ+qh$&Hw-a delta 229 zcmZo@U~F)hAT6lOz`(!+#4x}#QOB5HnL#h>0xwXAk$(dN|Ax(q1`_-eCuni_F|vtE zOEZ>E-pS`KstHoS#_!L>|CYai{|x_Tet-VilNAJ%CL0LwY<3bj$v1I=i@LlR3zMok z;}`GDymSTUqRial{5*XSM;pq~6lP)4H=Mj)Ue!`WoP|+ZHYGSOKffTgNFPcwFo=t? yFv-d@EBKe^C^%=9RO$m6+8~C!2*_}T6O(P_C4~hAS(wBnIgf;A<|OCqgGm4uIXEr= diff --git a/src/app/lib/db.zig b/src/app/lib/db.zig index 90f8e8a..dd6f7bf 100644 --- a/src/app/lib/db.zig +++ b/src/app/lib/db.zig @@ -10,8 +10,13 @@ pub const getArtist = \\SELECT artist, plays FROM artists WHERE artist == ? pub const getTrack = \\SELECT artist, track, album, plays FROM tracks WHERE track == ? ; -pub const getTrackSearch = \\SELECT url FROM artists WHERE artist == ? +pub const getTrackSearch = \\SELECT track, url, form FROM tracks WHERE track LIKE '%' || ? || '%' ; -pub const getArtistSearch = \\SELECT artist, url FROM artists WHERE artist LIKE '%' || ? || '%' -; \ No newline at end of file +pub const getArtistSearch = \\SELECT artist, url, form FROM artists WHERE artist LIKE '%' || ? || '%' +; + +pub const getAlbumSearch = \\SELECT album, url, form FROM albums WHERE album LIKE '%' || ? || '%' +; + +pub const total_search = getArtistSearch ++ " UNION " ++ getAlbumSearch ++ " UNION " ++ getTrackSearch; \ No newline at end of file diff --git a/src/app/views/search.zig b/src/app/views/search.zig index 5d9a5c6..46d1592 100644 --- a/src/app/views/search.zig +++ b/src/app/views/search.zig @@ -21,23 +21,25 @@ pub fn index(request: *jetzig.Request, data: *jetzig.Data) !jetzig.View { const queryOrNull: ?[]const u8 = if (params.get("q")) |param| param.string.value else null; if (queryOrNull) |query| { // sql.search(query, db); - var artistSearch = try db.prepare(queries.getArtistSearch); + var artistSearch = try db.prepare(queries.total_search); defer artistSearch.deinit(); const artistResults = try artistSearch.all( struct { artist: []u8, url: []u8, + form: []u8, }, arena.allocator(), .{}, - .{ .artist = query }, + .{ .artist = query, .album = query, .track = query }, ); for (artistResults) |r| { std.log.debug("artist: {s}, url: {s}", .{ r.artist, r.url }); try root.append(data.string(r.artist)); try root.append(data.string(r.url)); + try root.append(data.string(r.form)); //std.log.debug("{s}", .{r}); } } else { diff --git a/src/app/views/search/index.zmpl b/src/app/views/search/index.zmpl index 67ad7ea..4101944 100644 --- a/src/app/views/search/index.zmpl +++ b/src/app/views/search/index.zmpl @@ -4,15 +4,13 @@ Album Track - @zig ZIG + @zig { for (zmpl.items(.array), 0..) |u,i| { - if(@mod(i,2)==0){ + if(@mod(i,3)==0){ - {{u}} - {{i}} - + {{u}} } } - ZIG + } \ No newline at end of file