mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2025-01-19 01:35:28 +01:00
Merge branch 'dev' into remove/http-handler
This commit is contained in:
commit
1a58ccd45a
@ -1,16 +1,16 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
## --- [4.3.1] - 2023/TBD
|
## --- [4.3.1] - 2024/TBD
|
||||||
### New features
|
### New features
|
||||||
TBD
|
TBD
|
||||||
### Bug fixes
|
### Bug fixes
|
||||||
TBD
|
- Fix Server ID Rework for backups, schedules, and roles (INT ID to UUID migration) ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/729))
|
||||||
### Tweaks
|
### Tweaks
|
||||||
TBD
|
TBD
|
||||||
### Lang
|
### Lang
|
||||||
TBD
|
TBD
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
## --- [4.3.0] - 2023/03/09
|
## --- [4.3.0] - 2024/03/09
|
||||||
### Breaking Changes
|
### Breaking Changes
|
||||||
- This release includes database migrations that are not revertable. Once you update to this version you will not be able to rollback to a previous version.
|
- This release includes database migrations that are not revertable. Once you update to this version you will not be able to rollback to a previous version.
|
||||||
- In this release, we've implemented a breaking change to enhance server identification within Crafty: instead of relying on numerical integers (1, 2, 3, etc.), Servers are now uniquely identified by their UUIDs. Please adapt your API clients accordingly.
|
- In this release, we've implemented a breaking change to enhance server identification within Crafty: instead of relying on numerical integers (1, 2, 3, etc.), Servers are now uniquely identified by their UUIDs. Please adapt your API clients accordingly.
|
||||||
@ -34,7 +34,7 @@ TBD
|
|||||||
- Update `de_DE, en_EN, es_ES, fr_FR, he_IL, lol_EN, lv_LV, nl_BE pl_PL, th_TH, tr_TR, uk_UA, zh_CN` translations for `4.3.0` ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/715))
|
- Update `de_DE, en_EN, es_ES, fr_FR, he_IL, lol_EN, lv_LV, nl_BE pl_PL, th_TH, tr_TR, uk_UA, zh_CN` translations for `4.3.0` ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/715))
|
||||||
<br><br>
|
<br><br>
|
||||||
|
|
||||||
## --- [4.2.3] - 2023/02/02
|
## --- [4.2.3] - 2024/02/02
|
||||||
### New features
|
### New features
|
||||||
- Use Papermc Group's API for `paper` & `folia` builds in server builder ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/688))
|
- Use Papermc Group's API for `paper` & `folia` builds in server builder ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/688))
|
||||||
- Allow omission of player count from Dashboard (e.g. for proxy servers) ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/692))
|
- Allow omission of player count from Dashboard (e.g. for proxy servers) ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/692))
|
||||||
|
@ -369,11 +369,14 @@ class MigrationManager(object):
|
|||||||
@cached_property
|
@cached_property
|
||||||
def migrator(self) -> Migrator:
|
def migrator(self) -> Migrator:
|
||||||
"""
|
"""
|
||||||
Create migrator and setup it with fake migrations.
|
Create migrator
|
||||||
"""
|
"""
|
||||||
migrator = Migrator(self.database)
|
migrator = Migrator(self.database)
|
||||||
for name in self.done:
|
# Removing the up_one to prevent running all
|
||||||
self.up_one(name, migrator, True)
|
# migrations each time we got a new one.
|
||||||
|
# It's handled by migration.up() function.
|
||||||
|
# for name in self.done:
|
||||||
|
# self.up_one(name, migrator, True)
|
||||||
return migrator
|
return migrator
|
||||||
|
|
||||||
def compile(self, name, migrate="", rollback=""):
|
def compile(self, name, migrate="", rollback=""):
|
||||||
|
@ -17,7 +17,7 @@ create_role_schema = {
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"server_id": {
|
"server_id": {
|
||||||
"type": "integer",
|
"type": "string",
|
||||||
"minimum": 1,
|
"minimum": 1,
|
||||||
},
|
},
|
||||||
"permissions": {
|
"permissions": {
|
||||||
@ -47,7 +47,7 @@ basic_create_role_schema = {
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"server_id": {
|
"server_id": {
|
||||||
"type": "integer",
|
"type": "string",
|
||||||
"minimum": 1,
|
"minimum": 1,
|
||||||
},
|
},
|
||||||
"permissions": {
|
"permissions": {
|
||||||
|
@ -16,7 +16,7 @@ modify_role_schema = {
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"server_id": {
|
"server_id": {
|
||||||
"type": "integer",
|
"type": "string",
|
||||||
"minimum": 1,
|
"minimum": 1,
|
||||||
},
|
},
|
||||||
"permissions": {
|
"permissions": {
|
||||||
@ -46,7 +46,7 @@ basic_modify_role_schema = {
|
|||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"server_id": {
|
"server_id": {
|
||||||
"type": "integer",
|
"type": "string",
|
||||||
"minimum": 1,
|
"minimum": 1,
|
||||||
},
|
},
|
||||||
"permissions": {
|
"permissions": {
|
||||||
|
132
app/migrations/20240310_fixing_rework_servers_uuid.py
Normal file
132
app/migrations/20240310_fixing_rework_servers_uuid.py
Normal file
@ -0,0 +1,132 @@
|
|||||||
|
import datetime
|
||||||
|
import uuid
|
||||||
|
import peewee
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from app.classes.shared.console import Console
|
||||||
|
from app.classes.shared.migration import Migrator, MigrateHistory
|
||||||
|
from app.classes.models.management import Schedules, Backups
|
||||||
|
from app.classes.models.server_permissions import RoleServers
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def migrate(migrator: Migrator, database, **kwargs):
|
||||||
|
"""
|
||||||
|
Write your migrations here.
|
||||||
|
"""
|
||||||
|
db = database
|
||||||
|
|
||||||
|
# **********************************************************************************
|
||||||
|
# Servers New Model from Old (easier to migrate without dunmping Database)
|
||||||
|
# **********************************************************************************
|
||||||
|
class Servers(peewee.Model):
|
||||||
|
server_id = peewee.CharField(primary_key=True, default=str(uuid.uuid4()))
|
||||||
|
created = peewee.DateTimeField(default=datetime.datetime.now)
|
||||||
|
server_name = peewee.CharField(default="Server", index=True)
|
||||||
|
path = peewee.CharField(default="")
|
||||||
|
backup_path = peewee.CharField(default="")
|
||||||
|
executable = peewee.CharField(default="")
|
||||||
|
log_path = peewee.CharField(default="")
|
||||||
|
execution_command = peewee.CharField(default="")
|
||||||
|
auto_start = peewee.BooleanField(default=0)
|
||||||
|
auto_start_delay = peewee.IntegerField(default=10)
|
||||||
|
crash_detection = peewee.BooleanField(default=0)
|
||||||
|
stop_command = peewee.CharField(default="stop")
|
||||||
|
executable_update_url = peewee.CharField(default="")
|
||||||
|
server_ip = peewee.CharField(default="127.0.0.1")
|
||||||
|
server_port = peewee.IntegerField(default=25565)
|
||||||
|
logs_delete_after = peewee.IntegerField(default=0)
|
||||||
|
type = peewee.CharField(default="minecraft-java")
|
||||||
|
show_status = peewee.BooleanField(default=1)
|
||||||
|
created_by = peewee.IntegerField(default=-100)
|
||||||
|
shutdown_timeout = peewee.IntegerField(default=60)
|
||||||
|
ignored_exits = peewee.CharField(default="0")
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
table_name = "servers"
|
||||||
|
database = db
|
||||||
|
|
||||||
|
try:
|
||||||
|
logger.info("Migrating Data from Int to UUID (Fixing Issue)")
|
||||||
|
Console.info("Migrating Data from Int to UUID (Fixing Issue)")
|
||||||
|
|
||||||
|
# Changes on Servers Roles Table
|
||||||
|
migrator.alter_column_type(
|
||||||
|
RoleServers,
|
||||||
|
"server_id",
|
||||||
|
peewee.ForeignKeyField(
|
||||||
|
Servers,
|
||||||
|
backref="role_server",
|
||||||
|
null=True,
|
||||||
|
field=peewee.CharField(primary_key=True, default=str(uuid.uuid4())),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Changes on Backups Table
|
||||||
|
migrator.alter_column_type(
|
||||||
|
Backups,
|
||||||
|
"server_id",
|
||||||
|
peewee.ForeignKeyField(
|
||||||
|
Servers,
|
||||||
|
backref="backup_server",
|
||||||
|
null=True,
|
||||||
|
field=peewee.CharField(primary_key=True, default=str(uuid.uuid4())),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Changes on SChedule Table
|
||||||
|
migrator.alter_column_type(
|
||||||
|
Schedules,
|
||||||
|
"server_id",
|
||||||
|
peewee.ForeignKeyField(
|
||||||
|
Servers,
|
||||||
|
backref="schedule_server",
|
||||||
|
null=True,
|
||||||
|
field=peewee.CharField(primary_key=True, default=str(uuid.uuid4())),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
migrator.run()
|
||||||
|
|
||||||
|
logger.info("Migrating Data from Int to UUID (Fixing Issue) : SUCCESS")
|
||||||
|
Console.info("Migrating Data from Int to UUID (Fixing Issue) : SUCCESS")
|
||||||
|
|
||||||
|
except Exception as ex:
|
||||||
|
logger.error("Error while migrating Data from Int to UUID (Fixing Issue)")
|
||||||
|
logger.error(ex)
|
||||||
|
Console.error("Error while migrating Data from Int to UUID (Fixing Issue)")
|
||||||
|
Console.error(ex)
|
||||||
|
last_migration = MigrateHistory.get_by_id(MigrateHistory.select().count())
|
||||||
|
last_migration.delete()
|
||||||
|
return
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def rollback(migrator: Migrator, database, **kwargs):
|
||||||
|
"""
|
||||||
|
Write your rollback migrations here.
|
||||||
|
"""
|
||||||
|
db = database
|
||||||
|
|
||||||
|
# Changes on Webhook Table
|
||||||
|
migrator.alter_column_type(
|
||||||
|
RoleServers,
|
||||||
|
"server_id",
|
||||||
|
peewee.IntegerField(null=True),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Changes on Webhook Table
|
||||||
|
migrator.alter_column_type(
|
||||||
|
Backups,
|
||||||
|
"server_id",
|
||||||
|
peewee.IntegerField(null=True),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Changes on Webhook Table
|
||||||
|
migrator.alter_column_type(
|
||||||
|
Schedules,
|
||||||
|
"server_id",
|
||||||
|
peewee.IntegerField(null=True),
|
||||||
|
)
|
Loading…
x
Reference in New Issue
Block a user