Skip to content

Filename strategies

mongorunway.infrastructure.filename_strategies ¤

__all__: typing.Sequence[str] = ('MissingFilenameStrategy', 'NumericalFilenameStrategy', 'UnixFilenameStrategy') module-attribute ¤

MissingFilenameStrategy ¤

Bases: filename_strategy_port.FilenameStrategy

Source code in mongorunway\infrastructure\filename_strategies.py
class MissingFilenameStrategy(filename_strategy_port.FilenameStrategy):
    __slots__: typing.Sequence[str] = ()

    def is_valid_filename(self, filename: str, /) -> bool:
        return True

    def transform_migration_filename(self, filename: str, position: int) -> str:
        return filename

__slots__: typing.Sequence[str] = () instance-attribute class-attribute ¤

is_valid_filename(filename) ¤

Source code in mongorunway\infrastructure\filename_strategies.py
def is_valid_filename(self, filename: str, /) -> bool:
    return True

transform_migration_filename(filename, position) ¤

Source code in mongorunway\infrastructure\filename_strategies.py
def transform_migration_filename(self, filename: str, position: int) -> str:
    return filename

NumericalFilenameStrategy ¤

Bases: filename_strategy_port.FilenameStrategy

Source code in mongorunway\infrastructure\filename_strategies.py
class NumericalFilenameStrategy(filename_strategy_port.FilenameStrategy):
    __slots__: typing.Sequence[str] = ()

    def is_valid_filename(self, filename: str, /) -> bool:
        return all(char.isdigit() for char in filename[:3])

    def transform_migration_filename(self, filename: str, position: int) -> str:
        if not self.is_valid_filename(filename):
            filename_parts = [i for i in filename.split("_") if i]
            return str(position).zfill(3) + "_" + "_".join(filename_parts)

        return filename

__slots__: typing.Sequence[str] = () instance-attribute class-attribute ¤

is_valid_filename(filename) ¤

Source code in mongorunway\infrastructure\filename_strategies.py
def is_valid_filename(self, filename: str, /) -> bool:
    return all(char.isdigit() for char in filename[:3])

transform_migration_filename(filename, position) ¤

Source code in mongorunway\infrastructure\filename_strategies.py
def transform_migration_filename(self, filename: str, position: int) -> str:
    if not self.is_valid_filename(filename):
        filename_parts = [i for i in filename.split("_") if i]
        return str(position).zfill(3) + "_" + "_".join(filename_parts)

    return filename

UnixFilenameStrategy ¤

Bases: filename_strategy_port.FilenameStrategy

Source code in mongorunway\infrastructure\filename_strategies.py
class UnixFilenameStrategy(filename_strategy_port.FilenameStrategy):
    __slots__: typing.Sequence[str] = ()

    def is_valid_filename(self, filename: str, /) -> bool:
        return bool(re.match(r"^\d{10,}", filename))

    def transform_migration_filename(self, filename: str, position: int) -> str:
        if not self.is_valid_filename(filename):
            filename_parts = [i for i in filename.split("_") if i]
            return str(int(time.time())) + "_" + "_".join(filename_parts)

        return filename

__slots__: typing.Sequence[str] = () instance-attribute class-attribute ¤

is_valid_filename(filename) ¤

Source code in mongorunway\infrastructure\filename_strategies.py
def is_valid_filename(self, filename: str, /) -> bool:
    return bool(re.match(r"^\d{10,}", filename))

transform_migration_filename(filename, position) ¤

Source code in mongorunway\infrastructure\filename_strategies.py
def transform_migration_filename(self, filename: str, position: int) -> str:
    if not self.is_valid_filename(filename):
        filename_parts = [i for i in filename.split("_") if i]
        return str(int(time.time())) + "_" + "_".join(filename_parts)

    return filename