121
input *schedulepb.Schedule,
122
patch *schedulepb.SchedulePatch,
124
>
var zero time.Time
125
>
126
>
sched := &Scheduler{
127
>
SchedulerState: &schedulerpb.SchedulerState{
128
>
Schedule: input,
129
>
Info: &schedulepb.ScheduleInfo{
130
>
UpdateTime: timestamppb.New(zero),
131
>
},
132
>
Namespace: namespace,
133
>
NamespaceId: namespaceID,
134
>
ScheduleId: scheduleID,
135
>
ConflictToken: scheduler.InitialConflictToken,
136
>
},
137
>
cacheConflictToken: scheduler.InitialConflictToken,
138
>
Backfillers: make(chasm.Map[string, *Backfiller]),
139
>
LastCompletionResult: chasm.NewDataField(ctx, &schedulerpb.LastCompletionResult{}),
140
>
EventLog: chasm.NewComponentField(ctx, NewEventLog(ctx)),
141
>
}
142
>
sched.setNullableFields()
143
>
sched.Info.CreateTime = timestamppb.New(ctx.Now(sched))
144
>
145
>
invoker := NewInvoker(ctx)
146
>
sched.Invoker = chasm.NewComponentField(ctx, invoker)
147
>
148
>
generator := NewGenerator(ctx)
149
>
sched.Generator = chasm.NewComponentField(ctx, generator)
150
>
151
>
// Create backfillers to fulfill initialPatch.
152
>
if err := sched.handlePatch(ctx, patch); err != nil {
153
return nil, err
154
}
156
>
sched.Visibility = chasm.NewComponentField(ctx, visibility)
157
>
158
>
return sched, nil
159
}
160