Esquema y Espacio de Nombres
Al definir un modelo de datos en Vapor, es posible especificar el schema, que corresponde al nombre de la tabla en la base de datos. Sin embargo, para mantener una arquitectura organizada, es recomendable agrupar las tablas en diferentes espacios de nombres según criterios funcionales, en lugar de concentrarlas todas en el esquema predeterminado. Esta práctica facilita la separación lógica por dominios o módulos de la aplicación.
Implementación
Para asignar una tabla a un espacio de nombres específico, se debe sobrescribir la propiedad estática space en el modelo. Esta propiedad permite definir el namespace donde residirá la tabla, proporcionando una organización más granular de la estructura de base de datos.
public final class LocationCityModel: Model {
public static let schema = "cities"
public static let space: String? = "location"
@ID() public var id: UUID?
@Field(.name) public var name: String
public init() { }
}
Consideración
Es fundamental declarar la propiedad space como tipo String? (opcional). Si se declara como String (no opcional), no se sobrescribirá la propiedad heredada del protocolo Model, sino que se creará una nueva propiedad con el mismo nombre. Esto ocasionará que el framework ignore la configuración del espacio de nombres, manteniendo las tablas en el esquema predeterminado sin indicación de error aparente.
Si te preguntas cómo crear estos espacios de nombres automáticamente en la base de datos, explico cómo convertirlo en una migración en Migrate Spaces.
Keep coding, keep running 🏃♂️