func newFromConfig(ld blobserver.Loader, config jsonconfig.Obj) (blobserver.Storage, error) { blobPrefix := config.RequiredString("blobSource") file := config.RequiredString("file") if err := config.Validate(); err != nil { return nil, err } kv, err := sqlite.NewKeyValue(file) if err != nil { return nil, err } ix, err := index.New(kv) if err != nil { return nil, err } sto, err := ld.GetStorage(blobPrefix) if err != nil { ix.Close() return nil, err } ix.BlobSource = sto // Good enough, for now: ix.KeyFetcher = ix.BlobSource return ix, nil }
func newSorted(t *testing.T) (kv sorted.KeyValue, clean func()) { f, err := ioutil.TempFile("", "sqlite-test") if err != nil { t.Fatal(err) } db, err := sql.Open("sqlite3", f.Name()) if err != nil { t.Fatalf("opening test database: %v", err) } for _, tableSql := range sqlite.SQLCreateTables() { do(db, tableSql) } do(db, fmt.Sprintf(`REPLACE INTO meta VALUES ('version', '%d')`, sqlite.SchemaVersion())) kv, err = sqlite.NewKeyValue(f.Name()) if err != nil { t.Fatal(err) } return kv, func() { kv.Close() os.Remove(f.Name()) } }