Fix database scheme and introduce automatic database migration
This commit is contained in:
@@ -15,13 +15,6 @@ from .models import (
|
||||
from .validation import encode_hostname, encode_zone, ValidationError
|
||||
|
||||
|
||||
def cmd_init_db(args, app):
|
||||
"""Initialize database tables."""
|
||||
create_tables()
|
||||
print("Database tables created.")
|
||||
return 0
|
||||
|
||||
|
||||
def cmd_user_list(args, app):
|
||||
"""List all users."""
|
||||
users = User.select()
|
||||
@@ -198,9 +191,11 @@ def cmd_hostname_add(args, app):
|
||||
print(f"Error: User '{username}' not found.")
|
||||
return 1
|
||||
|
||||
# Check if hostname exists
|
||||
if Hostname.select().where(Hostname.hostname == hostname_str).exists():
|
||||
print(f"Error: Hostname '{hostname_str}' already exists.")
|
||||
# Check if hostname+zone exists
|
||||
if Hostname.select().where(
|
||||
(Hostname.hostname == hostname_str) & (Hostname.zone == zone)
|
||||
).exists():
|
||||
print(f"Error: Hostname '{hostname_str}' in zone '{zone}' exists.")
|
||||
return 1
|
||||
|
||||
# Create hostname
|
||||
@@ -217,17 +212,18 @@ def cmd_hostname_add(args, app):
|
||||
|
||||
def cmd_hostname_delete(args, app):
|
||||
"""Delete a hostname."""
|
||||
# Validate and encode hostname
|
||||
# Validate and encode hostname and zone
|
||||
try:
|
||||
hostname_str = encode_hostname(args.hostname)
|
||||
zone = encode_zone(args.zone)
|
||||
except ValidationError as e:
|
||||
print(f"Error: {e}")
|
||||
return 1
|
||||
|
||||
try:
|
||||
hostname = get_hostname(hostname_str)
|
||||
hostname = get_hostname(hostname_str, zone)
|
||||
except DoesNotExist:
|
||||
print(f"Error: Hostname '{hostname_str}' not found.")
|
||||
print(f"Error: Hostname '{hostname_str}' in zone '{zone}' not found.")
|
||||
return 1
|
||||
|
||||
# Delete DNS records if active
|
||||
@@ -262,17 +258,18 @@ def cmd_hostname_delete(args, app):
|
||||
|
||||
def cmd_hostname_modify(args, app):
|
||||
"""Modify hostname settings."""
|
||||
# Validate and encode hostname
|
||||
# Validate and encode hostname and zone
|
||||
try:
|
||||
hostname_str = encode_hostname(args.hostname)
|
||||
zone = encode_zone(args.zone)
|
||||
except ValidationError as e:
|
||||
print(f"Error: {e}")
|
||||
return 1
|
||||
|
||||
try:
|
||||
hostname = get_hostname(hostname_str)
|
||||
hostname = get_hostname(hostname_str, zone)
|
||||
except DoesNotExist:
|
||||
print(f"Error: Hostname '{hostname_str}' not found.")
|
||||
print(f"Error: Hostname '{hostname_str}' in zone '{zone}' not found.")
|
||||
return 1
|
||||
|
||||
# Get new TTLs
|
||||
|
||||
Reference in New Issue
Block a user