(ctx context.Context, zoneId string, name string, parts []int)
| 63 | } |
| 64 | |
| 65 | func dbGetFileParts(ctx context.Context, zoneId string, name string, parts []int) (map[int]*DataCacheEntry, error) { |
| 66 | if len(parts) == 0 { |
| 67 | return nil, nil |
| 68 | } |
| 69 | return WithTxRtn(ctx, func(tx *TxWrap) (map[int]*DataCacheEntry, error) { |
| 70 | var data []*DataCacheEntry |
| 71 | query := "SELECT partidx, data FROM db_file_data WHERE zoneid = ? AND name = ? AND partidx IN (SELECT value FROM json_each(?))" |
| 72 | tx.Select(&data, query, zoneId, name, dbutil.QuickJsonArr(parts)) |
| 73 | rtn := make(map[int]*DataCacheEntry) |
| 74 | for _, d := range data { |
| 75 | if cap(d.Data) != int(partDataSize) { |
| 76 | newData := make([]byte, len(d.Data), partDataSize) |
| 77 | copy(newData, d.Data) |
| 78 | d.Data = newData |
| 79 | } |
| 80 | rtn[d.PartIdx] = d |
| 81 | } |
| 82 | return rtn, nil |
| 83 | }) |
| 84 | } |
| 85 | |
| 86 | func dbGetZoneFiles(ctx context.Context, zoneId string) ([]*WaveFile, error) { |
| 87 | return WithTxRtn(ctx, func(tx *TxWrap) ([]*WaveFile, error) { |
no test coverage detected