mirror of
https://github.com/jetzig-framework/jetzig.git
synced 2025-05-14 14:06:08 +00:00
Fix database CLI environment variables config
Use the same environment setup as the main Jetzig app when running database CLI commands.
This commit is contained in:
parent
3063615e26
commit
e12b69985b
@ -15,8 +15,8 @@
|
||||
.hash = "12201d75d73aad5e1c996de4d5ae87a00e58479c8d469bc2eeb5fdeeac8857bc09af",
|
||||
},
|
||||
.jetquery = .{
|
||||
.url = "https://github.com/jetzig-framework/jetquery/archive/cc3aca60511079636f38701c790c2751582666b4.tar.gz",
|
||||
.hash = "122042fe961bce870e1b072d346fe21863d4baa3f78906eafd35e3aaae8dab020c78",
|
||||
.url = "https://github.com/jetzig-framework/jetquery/archive/4069610e0aea2dcdf9f73ca55f3aeb96f01fca5e.tar.gz",
|
||||
.hash = "122043f7b1614c94d311df1153c7702492b30fb56210fafbb80b52ab39de08a25092",
|
||||
},
|
||||
.jetcommon = .{
|
||||
.url = "https://github.com/jetzig-framework/jetcommon/archive/a248776ba56d6cc2b160d593ac3305756adcd26e.tar.gz",
|
||||
|
@ -9,8 +9,8 @@
|
||||
.hash = "1220411a8c46d95bbf3b6e2059854bcb3c5159d428814099df5294232b9980517e9c",
|
||||
},
|
||||
.jetquery = .{
|
||||
.url = "https://github.com/jetzig-framework/jetquery/archive/cc3aca60511079636f38701c790c2751582666b4.tar.gz",
|
||||
.hash = "122042fe961bce870e1b072d346fe21863d4baa3f78906eafd35e3aaae8dab020c78",
|
||||
.url = "https://github.com/jetzig-framework/jetquery/archive/4069610e0aea2dcdf9f73ca55f3aeb96f01fca5e.tar.gz",
|
||||
.hash = "122043f7b1614c94d311df1153c7702492b30fb56210fafbb80b52ab39de08a25092",
|
||||
},
|
||||
},
|
||||
.paths = .{
|
||||
|
@ -39,45 +39,57 @@ pub fn main() !void {
|
||||
});
|
||||
const action = map.get(args[1]) orelse return error.JetzigUnrecognizedArgument;
|
||||
|
||||
const env = try jetzig.Environment.init(allocator, .{ .silent = true });
|
||||
const repo_env = try jetzig.database.repoEnv(env);
|
||||
const maybe_database = repo_env.database orelse
|
||||
if (comptime @hasField(@TypeOf(config), "database")) config.database else null;
|
||||
|
||||
const database = maybe_database orelse {
|
||||
std.debug.print("Missing `database` option in `config/database.zig` " ++
|
||||
"for current environment or `JETQUERY_DATABASE` environment variable.\n", .{});
|
||||
std.process.exit(1);
|
||||
return;
|
||||
};
|
||||
|
||||
switch (action) {
|
||||
.migrate => {
|
||||
var repo = try migrationsRepo(action, allocator);
|
||||
var repo = try migrationsRepo(action, allocator, repo_env);
|
||||
defer repo.deinit();
|
||||
try Migrate(config.adapter).init(&repo).migrate();
|
||||
},
|
||||
.rollback => {
|
||||
var repo = try migrationsRepo(action, allocator);
|
||||
var repo = try migrationsRepo(action, allocator, repo_env);
|
||||
defer repo.deinit();
|
||||
try Migrate(config.adapter).init(&repo).rollback();
|
||||
},
|
||||
.create => {
|
||||
var repo = try migrationsRepo(action, allocator);
|
||||
var repo = try migrationsRepo(action, allocator, repo_env);
|
||||
defer repo.deinit();
|
||||
try repo.createDatabase(config.database, .{});
|
||||
try repo.createDatabase(database, .{});
|
||||
},
|
||||
.drop => {
|
||||
if (environment == .production) {
|
||||
const confirm = std.process.getEnvVarOwned(allocator, confirm_drop_env) catch |err| {
|
||||
switch (err) {
|
||||
error.EnvironmentVariableNotFound => {
|
||||
std.log.err(production_drop_failure_message, .{config.database});
|
||||
std.log.err(production_drop_failure_message, .{database});
|
||||
std.process.exit(1);
|
||||
},
|
||||
else => return err,
|
||||
}
|
||||
};
|
||||
if (std.mem.eql(u8, confirm, config.database)) {
|
||||
var repo = try migrationsRepo(action, allocator);
|
||||
if (std.mem.eql(u8, confirm, database)) {
|
||||
var repo = try migrationsRepo(action, allocator, repo_env);
|
||||
defer repo.deinit();
|
||||
try repo.dropDatabase(config.database, .{});
|
||||
try repo.dropDatabase(database, .{});
|
||||
} else {
|
||||
std.log.err(production_drop_failure_message, .{config.database});
|
||||
std.log.err(production_drop_failure_message, .{database});
|
||||
std.process.exit(1);
|
||||
}
|
||||
} else {
|
||||
var repo = try migrationsRepo(action, allocator);
|
||||
var repo = try migrationsRepo(action, allocator, repo_env);
|
||||
defer repo.deinit();
|
||||
try repo.dropDatabase(config.database, .{});
|
||||
try repo.dropDatabase(database, .{});
|
||||
}
|
||||
},
|
||||
.reflect => {
|
||||
@ -88,7 +100,7 @@ pub fn main() !void {
|
||||
var repo = try Repo.loadConfig(
|
||||
allocator,
|
||||
std.enums.nameCast(jetquery.Environment, environment),
|
||||
.{ .context = .migration },
|
||||
.{ .context = .migration, .env = repo_env },
|
||||
);
|
||||
const reflect = @import("jetquery_reflect").Reflect(config.adapter, Schema).init(
|
||||
allocator,
|
||||
@ -113,7 +125,7 @@ pub fn main() !void {
|
||||
}
|
||||
|
||||
const MigrationsRepo = jetquery.Repo(config.adapter, MigrateSchema);
|
||||
fn migrationsRepo(action: Action, allocator: std.mem.Allocator) !MigrationsRepo {
|
||||
fn migrationsRepo(action: Action, allocator: std.mem.Allocator, repo_env: anytype) !MigrationsRepo {
|
||||
return try MigrationsRepo.loadConfig(
|
||||
allocator,
|
||||
std.enums.nameCast(jetquery.Environment, environment),
|
||||
@ -124,6 +136,7 @@ fn migrationsRepo(action: Action, allocator: std.mem.Allocator) !MigrationsRepo
|
||||
.reflect => unreachable, // We use a separate repo for schema reflection.
|
||||
},
|
||||
.context = .migration,
|
||||
.env = repo_env,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user