From 6c53ccf8fc02f260d2153c4b3085ed134a94594f Mon Sep 17 00:00:00 2001 From: Bob Farrell Date: Tue, 5 Nov 2024 21:35:16 +0000 Subject: [PATCH] WIP --- build.zig | 3 +-- cli/commands/database.zig | 10 +++++----- cli/commands/database/{schema.zig => dump.zig} | 4 ++-- src/commands/database.zig | 14 +++++++------- src/jetzig/loggers/DevelopmentLogger.zig | 3 +++ 5 files changed, 18 insertions(+), 16 deletions(-) rename cli/commands/database/{schema.zig => dump.zig} (91%) diff --git a/build.zig b/build.zig index 827d7e9..bdae688 100644 --- a/build.zig +++ b/build.zig @@ -330,7 +330,6 @@ pub fn jetzigInit(b: *std.Build, exe: *std.Build.Step.Compile, options: JetzigIn exe_database.root_module.addImport("jetquery_migrate", jetquery_migrate_module); exe_database.root_module.addImport("jetquery_reflect", jetquery_reflect_module); exe_database.root_module.addImport("Schema", schema_module); - // exe_database.root_module.addOptions("build_options", build_options); registerDatabaseSteps(b, exe_database); @@ -347,7 +346,7 @@ fn registerDatabaseSteps(b: *std.Build, exe_database: *std.Build.Step.Compile) v .{ "rollback", "Roll back a migration in your Jetzig app's database." }, .{ "create", "Create a database for your Jetzig app." }, .{ "drop", "Drop your Jetzig app's database." }, - .{ "schema", "Read your app's database and generate a JetQuery schema." }, + .{ "dump", "Read your app's database and generate a JetQuery schema." }, }; inline for (commands) |command| { diff --git a/cli/commands/database.zig b/cli/commands/database.zig index 318f520..fbf8807 100644 --- a/cli/commands/database.zig +++ b/cli/commands/database.zig @@ -10,13 +10,13 @@ const migrate = @import("database/migrate.zig"); const rollback = @import("database/rollback.zig"); const create = @import("database/create.zig"); const drop = @import("database/drop.zig"); -const schema = @import("database/schema.zig"); +const dump = @import("database/dump.zig"); pub const confirm_drop_env = "JETZIG_DROP_PRODUCTION_DATABASE"; /// Command line options for the `database` command. pub const Options = struct { pub const meta = .{ - .usage_summary = "[migrate|rollback|create|drop|schema]", + .usage_summary = "[migrate|rollback|create|drop|dump]", .full_text = \\Manage the application's database. \\ @@ -40,13 +40,13 @@ pub fn run( defer arena.deinit(); const alloc = arena.allocator(); - const Action = enum { migrate, rollback, create, drop, schema }; + const Action = enum { migrate, rollback, create, drop, dump }; const map = std.StaticStringMap(Action).initComptime(.{ .{ "migrate", .migrate }, .{ "rollback", .rollback }, .{ "create", .create }, .{ "drop", .drop }, - .{ "schema", .schema }, + .{ "dump", .dump }, }); const action = if (main_options.positionals.len > 0) @@ -74,7 +74,7 @@ pub fn run( .rollback => rollback.run(alloc, cwd, sub_args, options, T, main_options), .create => create.run(alloc, cwd, sub_args, options, T, main_options), .drop => drop.run(alloc, cwd, sub_args, options, T, main_options), - .schema => schema.run(alloc, cwd, sub_args, options, T, main_options), + .dump => dump.run(alloc, cwd, sub_args, options, T, main_options), }; }; } diff --git a/cli/commands/database/schema.zig b/cli/commands/database/dump.zig similarity index 91% rename from cli/commands/database/schema.zig rename to cli/commands/database/dump.zig index 989d3b6..167d68e 100644 --- a/cli/commands/database/schema.zig +++ b/cli/commands/database/dump.zig @@ -19,7 +19,7 @@ pub fn run( \\ \\Example: \\ - \\ jetzig database schema + \\ jetzig database dump \\ , .{}); @@ -30,6 +30,6 @@ pub fn run( "zig", "build", util.environmentBuildOption(main_options.options.environment), - "jetzig:database:schema", + "jetzig:database:dump", }); } diff --git a/src/commands/database.zig b/src/commands/database.zig index 957dad6..15255f4 100644 --- a/src/commands/database.zig +++ b/src/commands/database.zig @@ -14,7 +14,7 @@ const production_drop_failure_message = "To drop a production database, " ++ const environment = jetzig.build_options.environment; const config = @field(jetquery.config.database, @tagName(environment)); -const Action = enum { migrate, rollback, create, drop, schema }; +const Action = enum { migrate, rollback, create, drop, dump }; pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -35,7 +35,7 @@ pub fn main() !void { .{ "rollback", .rollback }, .{ "create", .create }, .{ "drop", .drop }, - .{ "schema", .schema }, + .{ "dump", .dump }, }); const action = map.get(args[1]) orelse return error.JetzigUnrecognizedDatabaseArgument; @@ -80,7 +80,7 @@ pub fn main() !void { try repo.dropDatabase(config.database, .{}); } }, - .schema => { + .dump => { var cwd = try jetzig.util.detectJetzigProjectDir(); defer cwd.close(); @@ -99,13 +99,13 @@ pub fn main() !void { , }, ); - const schema = try reflect.generateSchema(); + const dump = try reflect.generateSchema(); const path = try cwd.realpathAlloc( allocator, try std.fs.path.join(allocator, &.{ "src", "app", "database", "Schema.zig" }), ); - try jetzig.util.createFile(path, schema); - std.log.info("Database schema written to `{s}`.", .{path}); + try jetzig.util.createFile(path, dump); + std.log.info("Database dump written to `{s}`.", .{path}); }, } } @@ -119,7 +119,7 @@ fn migrationsRepo(action: Action, allocator: std.mem.Allocator) !MigrationsRepo .admin = switch (action) { .migrate, .rollback => false, .create, .drop => true, - .schema => undefined, // We use a separate repo for schema reflection. + .dump => unreachable, // We use a separate repo for schema reflection. }, .context = .migration, }, diff --git a/src/jetzig/loggers/DevelopmentLogger.zig b/src/jetzig/loggers/DevelopmentLogger.zig index 34b58b1..821452b 100644 --- a/src/jetzig/loggers/DevelopmentLogger.zig +++ b/src/jetzig/loggers/DevelopmentLogger.zig @@ -136,10 +136,12 @@ const sql_tokens = .{ "UPDATE", "DELETE", "WHERE", + "SET", "ANY", "FROM", "INTO", "IN", + "ON", "IS", "NOT", "NULL", @@ -155,6 +157,7 @@ const sql_tokens = .{ "MIN", "COUNT", "SUM", + "VALUES", }; fn printSql(self: *const DevelopmentLogger, sql: []const u8) !void {