popcorn :: RepoObject :: defaultinit
# Base serializable entity that can go into a JsonRepository
#
# Provide boiler plate implementation of all object serializable to json.
#
# `id` is used as a primary key for `find_by_id`.
#
# Subclassing RepoObject makes it easy to create a serializable class:
# ~~~
# import popcorn::pop_repos
#
# class Album
# super RepoObject
# serialize
#
# var title: String
# var price: Float
# end
# ~~~
#
# Do not forget the `serialize` annotation else the fields will not be serialized.
#
# It is also possible to redefine the `id` primary key to use your own:
# ~~~
# import popcorn::pop_repos
#
# class Order
# super RepoObject
# serialize
#
# redef var id = "order-{get_time}"
#
# # ...
#
# end
# ~~~
abstract class RepoObject
serialize
# `self` unique id.
#
# This attribute is serialized under the key `_id` to be used
# as primary key by MongoDb
var id: String = (new MongoObjectId).id is writable, serialize_as "_id"
# Base object comparison on ID
#
# Because multiple deserialization can exists of the same instance,
# we use the ID to determine if two object are the same.
redef fun ==(o) do return o isa SELF and id == o.id
redef fun hash do return id.hash
redef fun to_s do return id
end
lib/popcorn/pop_repos.nit:375,1--427,3