66
ctx context.Context,
67
request *p.InternalUpdateTaskQueueUserDataRequest,
69
>
batch := d.Session.NewBatch(gocql.LoggedBatch).WithContext(ctx)
70
>
71
>
for taskQueue, update := range request.Updates {
72
>
if update.Version == 0 {
73
>
batch.Query(templateInsertTaskQueueUserDataQuery,
74
>
request.NamespaceID,
75
>
taskQueue,
76
>
update.UserData.Data,
77
>
update.UserData.EncodingType.String(),
78
>
)
79
>
} else {
80
>
batch.Query(templateUpdateTaskQueueUserDataQuery,
81
>
update.UserData.Data,
82
>
update.UserData.EncodingType.String(),
83
>
update.Version+1,
84
>
request.NamespaceID,
85
>
taskQueue,
86
>
update.Version,
87
>
)
88
>
}
89
>
for _, buildId := range update.BuildIdsAdded {
90
batch.Query(templateInsertBuildIdTaskQueueMappingQuery, request.NamespaceID, buildId, taskQueue)
91
}
93
batch.Query(templateDeleteBuildIdTaskQueueMappingQuery, request.NamespaceID, buildId, taskQueue)
94
}
95
}
96
98
>
applied, iter, err := d.Session.MapExecuteBatchCAS(batch, previous)
99
>
for _, update := range request.Updates {
100
>
if update.Applied != nil {
101
*update.Applied = applied
102
}
103
}
105
return gocql.ConvertError("UpdateTaskQueueUserData", err)
106
}
108
>
109
>
if !applied {
110
// No error, but not applied. That means we had a conflict.
111
// Iterate through results to identify first conflicting row.