Skip to content

Commit

Permalink
Make it easier to have consistent common fields in events
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Haarhoff committed Jun 5, 2024
1 parent 710d7da commit f222a29
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions src/types/domain-event.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,36 @@ import * as RA from 'fp-ts/ReadonlyArray';
import {pipe} from 'fp-ts/lib/function';
import {EmailAddressCodec} from './email-address';

const eventCodec = <A extends string, T extends t.Props>(
type: A,
payload: T
): t.ExactC<t.TypeC<T & {type: t.LiteralC<A>}>> =>
t.strict({...payload, type: t.literal(type)});

export const DomainEvent = t.union([
t.strict({
type: t.literal('AreaCreated'),
eventCodec('AreaCreated', {
name: t.string,
description: t.string,
id: tt.UUID,
}),
t.strict({
type: t.literal('EquipmentAdded'),
eventCodec('EquipmentAdded', {
name: t.string,
id: tt.UUID,
areaId: tt.UUID,
}),
t.strict({
type: t.literal('OwnerAdded'),
eventCodec('OwnerAdded', {
areaId: tt.UUID,
memberNumber: t.number,
}),
t.strict({
type: t.literal('SuperUserDeclared'),
eventCodec('SuperUserDeclared', {
memberNumber: t.number,
declaredAt: tt.DateFromISOString,
}),
t.strict({
type: t.literal('SuperUserRevoked'),
eventCodec('SuperUserRevoked', {
memberNumber: t.number,
revokedAt: tt.DateFromISOString,
}),
t.strict({
type: t.literal('MemberNumberLinkedToEmail'),
eventCodec('MemberNumberLinkedToEmail', {
memberNumber: t.number,
email: EmailAddressCodec,
}),
Expand Down

0 comments on commit f222a29

Please sign in to comment.