Son la representación de un objeto o concepto del mundo real que se describe en términos de datos computables, que pueden ser enviados por un protocolo y ser almacenados de forma persistente.

Nuestros modelos solo deben almacenar información para representar objetos o conceptos del mundo real y no deben usarse para otras responsabilidades.

¿Qué es un modelo para Storage?

La librería usa clases que implementan la interface Model con un identificador único de tipo String para realizar búsquedas, eliminaciones y actualizaciones.

import es.revengenetwork.storage.model.Model;
import org.jetbrains.annotations.NotNull;

public class UserModel implements Model {
	private final String id;
	private final String name;
	private int age;
	private Date birthday;

	public UserModel(
		final @NotNull String id,
		final @NotNull String name,
		final int age,
		final @NotNull Date birthday
	) {
		this.id = id;
		this.name = name;
		this.age = age;
		this.birthday = birthday;
	}

	@Override
	public @NotNull String id() {
		return this.id;
	}

	public @NotNull String name() {
		return this.name;
	}

	public int age() {
		return this.age;
	}

	public @NotNull Date birthday() {
		return this.birthday;
	}
}

Estos modelos no requieren un formato específico de almacenamiento. Solo asegúrate de que sus atributos puedan al final representarse como datos primitivos ya que posteriormente lo necesitarás para el proceso de serialización.