// Playing around
export class TimesheetRules extends Context.Tag("TimesheetRules")<TimesheetRules, {
isValid: (data: ReadonlyArray<EmployeeTimeSheetEntry>) => Effect.Effect<boolean, TimesheetRulesError>
}>() {}
export class TimesheetRuleContainer extends Context.Tag("TimesheetRuleContainer")<TimesheetRuleContainer, {
rules: ReadonlySet<TimesheetRules>
add: (rule: TimesheetRules) => Effect.Effect<void>
validate: () => Effect.Effect<void>
}>() {}
export function make() {
return Effect.gen(function*() {
const rules = new Set<TimesheetRules>()
const add = (rule: TimesheetRules) => {
rules.add(rule)
return Effect.void
}
const validate = () => {
for (const rule of rules) {
const r = yield* rule.isValid() //doesn't work
}
}
})
}
// Playing around
export class TimesheetRules extends Context.Tag("TimesheetRules")<TimesheetRules, {
isValid: (data: ReadonlyArray<EmployeeTimeSheetEntry>) => Effect.Effect<boolean, TimesheetRulesError>
}>() {}
export class TimesheetRuleContainer extends Context.Tag("TimesheetRuleContainer")<TimesheetRuleContainer, {
rules: ReadonlySet<TimesheetRules>
add: (rule: TimesheetRules) => Effect.Effect<void>
validate: () => Effect.Effect<void>
}>() {}
export function make() {
return Effect.gen(function*() {
const rules = new Set<TimesheetRules>()
const add = (rule: TimesheetRules) => {
rules.add(rule)
return Effect.void
}
const validate = () => {
for (const rule of rules) {
const r = yield* rule.isValid() //doesn't work
}
}
})
}