interface.go

 1package entity
 2
 3type Interface interface {
 4	// Id return the Entity identifier
 5	//
 6	// This Id need to be immutable without having to store the entity somewhere (ie, an entity only in memory
 7	// should have a valid Id, and it should not change if further edit are done on this entity).
 8	// How to achieve that is up to the entity itself. A common way would be to take a hash of an immutable data at
 9	// the root of the entity.
10	// It is acceptable to use such a hash and keep mutating that data as long as Id() is not called.
11	Id() Id
12	// Validate check if the Entity data is valid
13	Validate() error
14}
15
16// type Commitable interface {
17// 	Interface
18// 	NeedCommit() bool
19// 	CommitAsNeeded(repo repository.ClockedRepo) error
20// 	Commit(repo repository.ClockedRepo) error
21// }
22
23//
24// type Operation interface {
25//
26// }