- app/
- cmd/
- root.go
- database.go
- server.go
- http/
- handler/
- user_handler.go
- middleware/
- auth_middleware.go
- router/
- router.go
- repository/
- user_repository.go
- model/
- user.go
- security/
- password_hash.go
- service/
- user_service.go
- main.go
- database/
- schema.sql
- .env
- go.mod
- go.sum
-
app/cmd
: Este directorio almacena los comandos definidos con Cobra para tu aplicación. Los comandos suelen estar en archivos separados. Aquí hay algunos ejemplos:-
root.go
: Define el comando raíz, que puede no hacer mucho más que proporcionar opciones globales y manejar la inicialización de la aplicación. Desde aquí, puedes llamar a otros comandos y configurar las opciones globales. -
database.go
: Define comandos relacionados con la base de datos, como la creación de la base de datos o la ejecución de migraciones. Estos comandos se utilizan para preparar la base de datos antes de ejecutar la aplicación principal. -
server.go
: Define comandos relacionados con la ejecución del servidor web. Pueden incluir comandos para iniciar el servidor, definir el puerto y otras configuraciones relacionadas con el servidor web.
-
-
app/http
: Este directorio contiene la lógica relacionada con las solicitudes HTTP y el enrutamiento. Aquí encontrarás subdirectorios como:-
handler
: Donde puedes definir los manejadores de rutas HTTP, comouser_handler.go
, que maneja las rutas relacionadas con los usuarios. -
middleware
: Para definir middleware, comoauth_middleware.go
, que puede manejar la autenticación y la autorización de las solicitudes. -
router
: Donde puedes definir la configuración de enrutamiento de tus rutas HTTP.
-
-
app/repository
: Contiene archivos comouser_repository.go
, que albergan la lógica para interactuar con la base de datos en el contexto del patrón de diseño de repositorio. -
app/model
: Define las estructuras de datos relacionadas con tu modelo de dominio. Por ejemplo,user.go
puede definir la estructura de datos de un usuario. -
app/security
: Aquí es donde puedes colocar funciones de seguridad, comopassword_hash.go
, que implementa la lógica para el hashing de contraseñas. -
app/service
: Contiene la lógica empresarial de tu aplicación, comouser_service.go
, que puede utilizar el repositorio y otras funciones para realizar operaciones relacionadas con los usuarios. -
main.go
: El punto de entrada principal de tu aplicación, que puede configurar los comandos de Cobra y manejar la ejecución de la aplicación. -
database
: Aquí se encuentra el archivoschema.sql
, que incluye las sentencias SQL para la creación de la base de datos y las tablas necesarias. -
.env
: Este archivo almacena las variables de entorno, como configuraciones de la base de datos o claves secretas. -
go.mod
ygo.sum
: Son archivos del sistema de gestión de dependencias de Go.
Esta estructura de carpetas organiza tu aplicación de manera modular y permite que cada parte cumpla con su función específica. Los comandos de Cobra, que se encuentran en app/cmd
, son responsables de la ejecución de acciones específicas, como la inicialización de la base de datos o la ejecución del servidor web. La lógica de la aplicación y la base de datos se mantienen separadas y se pueden reutilizar fácilmente en otros contextos.