La primera entidad básica de nuestro sistema será la de usuarios, pues será una forma de ofrecer una experiencia personalizada 1:1 del mismo. Deberemos de, al menos inicialmente, poder tener un CRUD (o, mejor dicho, BREAD) de esta entidad.
Como primera aproximación, el usuario simplemente tendrá un nombre de usuario y una contraseña; sin embargo, la tabla representará esta información de forma que la contraseña estará hasheada.
Importante: en la entidad, los tamaños de las cadenas son restricciones de cara al usuario; los strings en Go no tienen limitaciones; en la base de datos sí.
Tanto esta tabla como todas las que se creen deberán de proveer de timestamps (created_at, updated_at) y de soft-deletes (deleted_at).
Todos los campos son requeridos (NOT NULL).
Condiciones a satisfacer
Deberemos de tener el esquema de la base de datos creado a través de una migración (tanto para crearla como para revertirla).
Deberemos de implementar el acceso a los usuarios haciendo uso uso del patrón DAO con las funciones de obtener todos, obtener uno, añadir, editar y borrar.
Cuando se realice una acción de escritura en un registro, se escribirá la fecha de la operación en el timestamp que corresponda (created_at para cuando se cree, updated_at cuando se modifique y deleted_at cuando se borre).
Los usuarios no se borran; se les introduce el timestamp de deleted_at y dejan de mostrarse en las operaciones de obtener todos y obtener uno.
De momento no es necesario implementar ninguna securización; se hará más adelante.
Descripcion
La primera entidad básica de nuestro sistema será la de usuarios, pues será una forma de ofrecer una experiencia personalizada 1:1 del mismo. Deberemos de, al menos inicialmente, poder tener un CRUD (o, mejor dicho, BREAD) de esta entidad.
Como primera aproximación, el usuario simplemente tendrá un nombre de usuario y una contraseña; sin embargo, la tabla representará esta información de forma que la contraseña estará hasheada.
Condiciones a satisfacer
created_at
para cuando se cree,updated_at
cuando se modifique ydeleted_at
cuando se borre).deleted_at
y dejan de mostrarse en las operaciones de obtener todos y obtener uno.De momento no es necesario implementar ninguna securización; se hará más adelante.
Referencias