Create creates a new release or returns ErrReleaseExists.
(key string, rel release.Releaser)
| 157 | |
| 158 | // Create creates a new release or returns ErrReleaseExists. |
| 159 | func (mem *Memory) Create(key string, rel release.Releaser) error { |
| 160 | defer unlock(mem.wlock()) |
| 161 | |
| 162 | rls, err := releaserToV1Release(rel) |
| 163 | if err != nil { |
| 164 | return err |
| 165 | } |
| 166 | // For backwards compatibility, we protect against an unset namespace |
| 167 | namespace := rls.Namespace |
| 168 | if namespace == "" { |
| 169 | namespace = defaultNamespace |
| 170 | } |
| 171 | mem.SetNamespace(namespace) |
| 172 | |
| 173 | if _, ok := mem.cache[namespace]; !ok { |
| 174 | mem.cache[namespace] = memReleases{} |
| 175 | } |
| 176 | |
| 177 | if recs, ok := mem.cache[namespace][rls.Name]; ok { |
| 178 | if err := recs.Add(newRecord(key, rls)); err != nil { |
| 179 | return err |
| 180 | } |
| 181 | mem.cache[namespace][rls.Name] = recs |
| 182 | return nil |
| 183 | } |
| 184 | mem.cache[namespace][rls.Name] = records{newRecord(key, rls)} |
| 185 | return nil |
| 186 | } |
| 187 | |
| 188 | // Update updates a release or returns ErrReleaseNotFound. |
| 189 | func (mem *Memory) Update(key string, rel release.Releaser) error { |