feat: add overwrite old db option
This commit is contained in:
parent
c98c3a3d53
commit
5c9835c610
1 changed files with 49 additions and 1 deletions
|
|
@ -122,6 +122,47 @@ def migrate(old_ver, new_ver, old_db, new_db):
|
|||
print("✅ Migration finished successfully!")
|
||||
|
||||
|
||||
def rename_databases(old_db: str, new_db: str):
|
||||
"""
|
||||
When overwrite is enabled, back up the original old_db (file with .lock and .wal or directory)
|
||||
by renaming it to *_old, and replace it with the newly imported new_db files.
|
||||
"""
|
||||
base_dir = os.path.dirname(old_db)
|
||||
name = os.path.basename(old_db.rstrip(os.sep))
|
||||
backup_base = os.path.join(base_dir, f"{name}_old")
|
||||
|
||||
if os.path.isfile(old_db):
|
||||
# File-based database: handle main file and accompanying lock/WAL
|
||||
for ext in ["", ".lock", ".wal"]:
|
||||
src = old_db + ext
|
||||
dst = backup_base + ext
|
||||
if os.path.exists(src):
|
||||
os.rename(src, dst)
|
||||
print(f"Renamed '{src}' to '{dst}'", file=sys.stderr)
|
||||
|
||||
# Now move new files into place
|
||||
for ext in ["", ".lock", ".wal"]:
|
||||
src_new = new_db + ext
|
||||
dst_new = os.path.join(base_dir, name + ext)
|
||||
if os.path.exists(src_new):
|
||||
os.rename(src_new, dst_new)
|
||||
print(f"Renamed '{src_new}' to '{dst_new}'", file=sys.stderr)
|
||||
|
||||
elif os.path.isdir(old_db):
|
||||
# Directory-based database
|
||||
backup_dir = backup_base
|
||||
os.rename(old_db, backup_dir)
|
||||
print(f"Renamed directory '{old_db}' to '{backup_dir}'", file=sys.stderr)
|
||||
|
||||
# Move new directory into original location
|
||||
os.rename(new_db, old_db)
|
||||
print(f"Renamed new directory '{new_db}' to '{old_db}'", file=sys.stderr)
|
||||
|
||||
else:
|
||||
print(f"Original database path '{old_db}' not found for renaming.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def main():
|
||||
p = argparse.ArgumentParser(
|
||||
description="Migrate Kùzu DB via PyPI versions",
|
||||
|
|
@ -143,6 +184,7 @@ to isolate different Kuzu versions.
|
|||
p.add_argument("--new-version", required=True, help="Target Kuzu version (e.g., 0.11.0)")
|
||||
p.add_argument("--old-db", required=True, help="Path to source database directory")
|
||||
p.add_argument("--new-db", required=True, help="Path to target database directory")
|
||||
p.add_argument("--overwrite", required=True, help="Path to target database directory")
|
||||
|
||||
args = p.parse_args()
|
||||
|
||||
|
|
@ -154,7 +196,13 @@ to isolate different Kuzu versions.
|
|||
print("", file=sys.stderr)
|
||||
|
||||
migrate(args.old_version, args.new_version, args.old_db, args.new_db)
|
||||
# migrate("0.9.0", "0.11.0", "/Users/igorilic/Desktop/cognee/cognee/.cognee_system/databases/cognee_graph_kuzu", "/Users/igorilic/Desktop/cognee/cognee/.cognee_system/databases/cognee_graph")
|
||||
|
||||
if args.overwrite:
|
||||
rename_databases(args.old_db, args.new_db)
|
||||
|
||||
|
||||
# migrate("0.11.0", "0.11.0", "/Users/igorilic/Desktop/cognee/cognee/.cognee_system/databases/cognee_graph_kuzu", "/Users/igorilic/Desktop/cognee/cognee/.cognee_system/databases/cognee_graph")
|
||||
# rename_databases("/Users/igorilic/Desktop/cognee/cognee/.cognee_system/databases/cognee_graph_kuzu", "/Users/igorilic/Desktop/cognee/cognee/.cognee_system/databases/cognee_graph")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue