mirror of
https://github.com/jetzig-framework/jetzig.git
synced 2025-05-14 14:06:08 +00:00
WIP
This commit is contained in:
parent
058a82582a
commit
55f7bebb9e
@ -7,8 +7,7 @@
|
|||||||
.hash = "1220d0e8734628fd910a73146e804d10a3269e3e7d065de6bb0e3e88d5ba234eb163",
|
.hash = "1220d0e8734628fd910a73146e804d10a3269e3e7d065de6bb0e3e88d5ba234eb163",
|
||||||
},
|
},
|
||||||
.zmpl = .{
|
.zmpl = .{
|
||||||
.url = "https://github.com/jetzig-framework/zmpl/archive/dc4c5d2e224ce61990a9593681ee7ffb8c2ca8c2.tar.gz",
|
.path = "../zmpl",
|
||||||
.hash = "1220175cf7aa82cc18c787e29ec2f62d17b55a5d0d280dfd15ffa347d3932beb9bdc",
|
|
||||||
},
|
},
|
||||||
.jetkv = .{
|
.jetkv = .{
|
||||||
.url = "https://github.com/jetzig-framework/jetkv/archive/2b1130a48979ea2871c8cf6ca89c38b1e7062839.tar.gz",
|
.url = "https://github.com/jetzig-framework/jetkv/archive/2b1130a48979ea2871c8cf6ca89c38b1e7062839.tar.gz",
|
||||||
|
@ -55,7 +55,8 @@ const Function = struct {
|
|||||||
const path = relative_path[0 .. relative_path.len - std.fs.path.extension(relative_path).len];
|
const path = relative_path[0 .. relative_path.len - std.fs.path.extension(relative_path).len];
|
||||||
if (std.mem.eql(u8, path, "root")) return try self.routes.allocator.dupe(u8, "/");
|
if (std.mem.eql(u8, path, "root")) return try self.routes.allocator.dupe(u8, "/");
|
||||||
|
|
||||||
return try std.mem.concat(self.routes.allocator, u8, &[_][]const u8{ "/", path });
|
const maybe_new = if (std.mem.eql(u8, self.name, "new")) "/new" else "";
|
||||||
|
return try std.mem.concat(self.routes.allocator, u8, &[_][]const u8{ "/", path, maybe_new });
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn lessThanFn(context: void, lhs: Function, rhs: Function) bool {
|
pub fn lessThanFn(context: void, lhs: Function, rhs: Function) bool {
|
||||||
|
@ -3,6 +3,8 @@ const routes = @import("routes");
|
|||||||
const app = @import("app");
|
const app = @import("app");
|
||||||
const jetzig = @import("jetzig");
|
const jetzig = @import("jetzig");
|
||||||
|
|
||||||
|
pub const jetzig_options = app.jetzig_options;
|
||||||
|
|
||||||
pub fn main() !void {
|
pub fn main() !void {
|
||||||
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
|
||||||
const allocator = gpa.allocator();
|
const allocator = gpa.allocator();
|
||||||
@ -21,6 +23,7 @@ pub fn main() !void {
|
|||||||
const action = comptime switch (route.action) {
|
const action = comptime switch (route.action) {
|
||||||
.get => jetzig.colors.cyan("{s: <7}"),
|
.get => jetzig.colors.cyan("{s: <7}"),
|
||||||
.index => jetzig.colors.blue("{s: <7}"),
|
.index => jetzig.colors.blue("{s: <7}"),
|
||||||
|
.new => jetzig.colors.green("{s: <7}"),
|
||||||
.post => jetzig.colors.yellow("{s: <7}"),
|
.post => jetzig.colors.yellow("{s: <7}"),
|
||||||
.put => jetzig.colors.magenta("{s: <7}"),
|
.put => jetzig.colors.magenta("{s: <7}"),
|
||||||
.patch => jetzig.colors.bright_magenta("{s: <7}"),
|
.patch => jetzig.colors.bright_magenta("{s: <7}"),
|
||||||
@ -32,6 +35,7 @@ pub fn main() !void {
|
|||||||
@tagName(route.action),
|
@tagName(route.action),
|
||||||
route.uri_path ++ switch (route.action) {
|
route.uri_path ++ switch (route.action) {
|
||||||
.index, .post => "",
|
.index, .post => "",
|
||||||
|
.new => "/new",
|
||||||
.get, .put, .patch, .delete => "/:id",
|
.get, .put, .patch, .delete => "/:id",
|
||||||
.custom => "",
|
.custom => "",
|
||||||
},
|
},
|
||||||
|
@ -50,4 +50,7 @@ pub fn repo(allocator: std.mem.Allocator, maybe_options: ?DatabaseOptions, app:
|
|||||||
|
|
||||||
fn eventCallback(event: jetzig.jetquery.events.Event, app: *const jetzig.App) !void {
|
fn eventCallback(event: jetzig.jetquery.events.Event, app: *const jetzig.App) !void {
|
||||||
try app.server.logger.INFO("[database] {?s}", .{event.sql});
|
try app.server.logger.INFO("[database] {?s}", .{event.sql});
|
||||||
|
if (event.err) |err| {
|
||||||
|
try app.server.logger.ERROR("[database] {?s}", .{err.message});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -632,6 +632,7 @@ pub fn match(self: *Request, route: jetzig.views.Route) !bool {
|
|||||||
.GET => switch (route.action) {
|
.GET => switch (route.action) {
|
||||||
.index => self.isMatch(.exact, route),
|
.index => self.isMatch(.exact, route),
|
||||||
.get => self.isMatch(.resource_id, route),
|
.get => self.isMatch(.resource_id, route),
|
||||||
|
.new => self.isMatch(.exact, route),
|
||||||
else => false,
|
else => false,
|
||||||
},
|
},
|
||||||
.POST => switch (route.action) {
|
.POST => switch (route.action) {
|
||||||
@ -660,5 +661,7 @@ fn isMatch(self: *Request, match_type: enum { exact, resource_id }, route: jetzi
|
|||||||
.resource_id => self.path.directory,
|
.resource_id => self.path.directory,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (route.action == .get and std.mem.eql(u8, self.path.resource_id, "new")) return false;
|
||||||
|
|
||||||
return std.mem.eql(u8, path, route.uri_path);
|
return std.mem.eql(u8, path, route.uri_path);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ const jetzig = @import("../../jetzig.zig");
|
|||||||
|
|
||||||
const Route = @This();
|
const Route = @This();
|
||||||
|
|
||||||
pub const Action = enum { index, get, post, put, patch, delete, custom };
|
pub const Action = enum { index, get, new, post, put, patch, delete, custom };
|
||||||
pub const RenderFn = *const fn (Route, *jetzig.http.Request) anyerror!jetzig.views.View;
|
pub const RenderFn = *const fn (Route, *jetzig.http.Request) anyerror!jetzig.views.View;
|
||||||
pub const RenderStaticFn = *const fn (Route, *jetzig.http.StaticRequest) anyerror!jetzig.views.View;
|
pub const RenderStaticFn = *const fn (Route, *jetzig.http.StaticRequest) anyerror!jetzig.views.View;
|
||||||
|
|
||||||
@ -17,6 +17,7 @@ const StaticViewWithId = *const fn (id: []const u8, *jetzig.http.StaticRequest,
|
|||||||
pub const Formats = struct {
|
pub const Formats = struct {
|
||||||
index: ?[]const ResponseFormat = null,
|
index: ?[]const ResponseFormat = null,
|
||||||
get: ?[]const ResponseFormat = null,
|
get: ?[]const ResponseFormat = null,
|
||||||
|
new: ?[]const ResponseFormat = null,
|
||||||
post: ?[]const ResponseFormat = null,
|
post: ?[]const ResponseFormat = null,
|
||||||
put: ?[]const ResponseFormat = null,
|
put: ?[]const ResponseFormat = null,
|
||||||
patch: ?[]const ResponseFormat = null,
|
patch: ?[]const ResponseFormat = null,
|
||||||
@ -28,6 +29,7 @@ const ResponseFormat = enum { html, json };
|
|||||||
pub const DynamicViewType = union(Action) {
|
pub const DynamicViewType = union(Action) {
|
||||||
index: ViewWithoutId,
|
index: ViewWithoutId,
|
||||||
get: ViewWithId,
|
get: ViewWithId,
|
||||||
|
new: ViewWithoutId,
|
||||||
post: ViewWithoutId,
|
post: ViewWithoutId,
|
||||||
put: ViewWithId,
|
put: ViewWithId,
|
||||||
patch: ViewWithId,
|
patch: ViewWithId,
|
||||||
@ -38,6 +40,7 @@ pub const DynamicViewType = union(Action) {
|
|||||||
pub const StaticViewType = union(Action) {
|
pub const StaticViewType = union(Action) {
|
||||||
index: StaticViewWithoutId,
|
index: StaticViewWithoutId,
|
||||||
get: StaticViewWithId,
|
get: StaticViewWithId,
|
||||||
|
new: StaticViewWithoutId,
|
||||||
post: StaticViewWithoutId,
|
post: StaticViewWithoutId,
|
||||||
put: StaticViewWithId,
|
put: StaticViewWithId,
|
||||||
patch: StaticViewWithId,
|
patch: StaticViewWithId,
|
||||||
@ -120,6 +123,7 @@ pub fn validateFormat(self: Route, request: *const jetzig.http.Request) bool {
|
|||||||
const supported_formats = switch (self.action) {
|
const supported_formats = switch (self.action) {
|
||||||
.index => formats.index orelse return true,
|
.index => formats.index orelse return true,
|
||||||
.get => formats.get orelse return true,
|
.get => formats.get orelse return true,
|
||||||
|
.new => formats.new orelse return true,
|
||||||
.post => formats.post orelse return true,
|
.post => formats.post orelse return true,
|
||||||
.put => formats.put orelse return true,
|
.put => formats.put orelse return true,
|
||||||
.patch => formats.patch orelse return true,
|
.patch => formats.patch orelse return true,
|
||||||
@ -156,6 +160,7 @@ fn renderFn(self: Route, request: *jetzig.http.Request) anyerror!jetzig.views.Vi
|
|||||||
switch (self.view.dynamic) {
|
switch (self.view.dynamic) {
|
||||||
.index => |view| return try view(request, request.response_data),
|
.index => |view| return try view(request, request.response_data),
|
||||||
.get => |view| return try view(request.path.resource_id, request, request.response_data),
|
.get => |view| return try view(request.path.resource_id, request, request.response_data),
|
||||||
|
.new => |view| return try view(request, request.response_data),
|
||||||
.post => |view| return try view(request, request.response_data),
|
.post => |view| return try view(request, request.response_data),
|
||||||
.patch => |view| return try view(request.path.resource_id, request, request.response_data),
|
.patch => |view| return try view(request.path.resource_id, request, request.response_data),
|
||||||
.put => |view| return try view(request.path.resource_id, request, request.response_data),
|
.put => |view| return try view(request.path.resource_id, request, request.response_data),
|
||||||
@ -170,6 +175,7 @@ fn renderStaticFn(self: Route, request: *jetzig.http.StaticRequest) anyerror!jet
|
|||||||
switch (self.view.static) {
|
switch (self.view.static) {
|
||||||
.index => |view| return try view(request, request.response_data),
|
.index => |view| return try view(request, request.response_data),
|
||||||
.get => |view| return try view(try request.resourceId(), request, request.response_data),
|
.get => |view| return try view(try request.resourceId(), request, request.response_data),
|
||||||
|
.new => |view| return try view(request, request.response_data),
|
||||||
.post => |view| return try view(request, request.response_data),
|
.post => |view| return try view(request, request.response_data),
|
||||||
.patch => |view| return try view(try request.resourceId(), request, request.response_data),
|
.patch => |view| return try view(try request.resourceId(), request, request.response_data),
|
||||||
.put => |view| return try view(try request.resourceId(), request, request.response_data),
|
.put => |view| return try view(try request.resourceId(), request, request.response_data),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user