package platform import "context" // User is a user. 🎉 type User struct { ID ID `json:"id,omitempty"` Name string `json:"name"` } // UserService represents a service for managing user data. type UserService interface { // Returns a single user by ID. FindUserByID(ctx context.Context, id ID) (*User, error) // Returns the first user that matches filter. FindUser(ctx context.Context, filter UserFilter) (*User, error) // Returns a list of users that match filter and the total count of matching users. // Additional options provide pagination & sorting. FindUsers(ctx context.Context, filter UserFilter, opt ...FindOptions) ([]*User, int, error) // Creates a new user and sets u.ID with the new identifier. CreateUser(ctx context.Context, u *User) error // Updates a single user with changeset. // Returns the new user state after update. UpdateUser(ctx context.Context, id ID, upd UserUpdate) (*User, error) // Removes a user by ID. DeleteUser(ctx context.Context, id ID) error } // UserUpdate represents updates to a user. // Only fields which are set are updated. type UserUpdate struct { Name *string `json:"name"` } // UserFilter represents a set of filter that restrict the returned results. type UserFilter struct { ID *ID Name *string }