Skip to content

Commit

Permalink
chore: wip
Browse files Browse the repository at this point in the history
  • Loading branch information
mabels committed Sep 11, 2024
1 parent 73e51bf commit dfea2c9
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 34 deletions.
10 changes: 7 additions & 3 deletions src/database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ export interface DatabaseOpts {
readonly name?: string;
// readonly public?: boolean;
readonly meta?: DbMeta;
readonly factoryUnreg: () => void;
// readonly persistIndexes?: boolean;
// readonly autoCompact?: number;
readonly storeUrls: StoreURIRuntime;
Expand All @@ -56,12 +57,15 @@ export interface DatabaseOpts {
}

export class Database<DT extends DocTypes = NonNullable<unknown>> implements Connectable {
static factory<T extends DocTypes = NonNullable<unknown>>(name?: string, opts?: ConfigOpts): Database<T> {
static factory<T extends DocTypes = NonNullable<unknown>>(name: string | undefined, opts?: ConfigOpts): Database<T> {
const sthis = ensureSuperThis(opts);
return databases.get(keyConfigOpts(sthis, name, opts)).once(() => {
return databases.get(keyConfigOpts(sthis, name, opts)).once((key) => {
return new Database(sthis, {
name,
meta: opts?.meta,
factoryUnreg: () => {
databases.unreg(key);
},
keyBag: defaultKeyBagOpts(sthis, opts?.keyBag),
storeUrls: toStoreURIRuntime(sthis, name, opts?.storeUrls),
storeEnDe: {
Expand Down Expand Up @@ -275,7 +279,7 @@ function defaultURI(curi: CoerceURI | undefined, uri: BuildURI, store: "data" |
}
if (store === "data") {
if (ctx.file) {
ret.defParam(PARAM.SUFFIX, "");
// ret.defParam(PARAM.SUFFIX, "");
} else {
ret.defParam(PARAM.SUFFIX, ".car");
}
Expand Down
5 changes: 4 additions & 1 deletion tests/fireproof/config.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ function dataDir(sthis: SuperThis, name?: string, base?: CoerceURI): URI {
if (!base) {
if (!runtimeFn().isBrowser) {
const home = sthis.env.get("HOME") || "./";
base = sthis.env.get("FP_STORAGE_URL") || `file://${sthis.pathOps.join(home, ".fireproof")}`;
base = sthis.env.get("FP_STORAGE_URL") || `file://${sthis.pathOps.join(home, ".fireproof",
rt.FILESTORE_VERSION.replace(/-.*$/, ""))}?${PARAM.URL_GEN}=default`;
} else {
base = sthis.env.get("FP_STORAGE_URL") || `indexdb://fp`;
}
Expand Down Expand Up @@ -86,12 +87,14 @@ describe("fireproof/config", () => {
it("node default", async () => {
const old = sthis.env.get("FP_STORAGE_URL");
sthis.env.delete("FP_STORAGE_URL");
// this switches file: protocol not memory:
let baseDir = dataDir(sthis, my_app()).pathname;
baseDir = sthis.pathOps.join(baseDir, rt.FILESTORE_VERSION, my_app());
// await sthis.sys.fs.rm(baseDir, { recursive: true }).catch(() => {
// /* */
// });

console.log(`>>>>>>>>>>>>>>>node-default`, baseDir);
const sysfs = await rt.getFileSystem(URI.from(baseDir));
await sysfs.rm(baseDir, { recursive: true }).catch(() => {
/* */
Expand Down
72 changes: 42 additions & 30 deletions tests/fireproof/database.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ describe("basic Database", () => {
});
beforeEach(async () => {
await sthis.start();
db = Database.factory();
db = Database.factory(undefined, {
logger: sthis.logger,
});
});
it("should put", async () => {
/** @type {Doc} */
Expand Down Expand Up @@ -505,29 +507,33 @@ describe("StoreURIRuntime", () => {
it("default toStoreURIRuntime", () => {
expect(JSON.parse(JSON.stringify(toStoreURIRuntime(sthis, "test")))).toEqual({
data: {
data: "my://storage?name=test&store=data",
meta: "my://storage?name=test&store=meta",
wal: "my://storage?name=test&store=wal",
data: "my://storage?name=test&store=data&suffix=.car&urlGen=fromEnv",
file: "my://storage?name=test&store=data&urlGen=fromEnv",
meta: "my://storage?name=test&store=meta&urlGen=fromEnv",
wal: "my://storage?name=test&store=wal&urlGen=fromEnv",
},
idx: {
data: "my://storage?idx=idx&name=test&store=data",
meta: "my://storage?idx=idx&name=test&store=meta",
wal: "my://storage?idx=idx&name=test&store=wal",
data: "my://storage?index=idx&name=test&store=data&suffix=.car&urlGen=fromEnv",
file: "my://storage?index=idx&name=test&store=data&urlGen=fromEnv",
meta: "my://storage?index=idx&name=test&store=meta&urlGen=fromEnv",
wal: "my://storage?index=idx&name=test&store=wal&urlGen=fromEnv",
},
});
// keyConfigOpts(sthis: SuperThis, name: string, opts?: ConfigOpts): string {
});
it("no name toStoreURIRuntime", () => {
expect(JSON.parse(JSON.stringify(toStoreURIRuntime(sthis)))).toEqual({
data: {
data: "my://storage?store=data",
meta: "my://storage?store=meta",
wal: "my://storage?store=wal",
data: "my://storage?store=data&suffix=.car&urlGen=fromEnv",
file: "my://storage?store=data&urlGen=fromEnv",
meta: "my://storage?store=meta&urlGen=fromEnv",
wal: "my://storage?store=wal&urlGen=fromEnv",
},
idx: {
data: "my://storage?idx=idx&store=data",
meta: "my://storage?idx=idx&store=meta",
wal: "my://storage?idx=idx&store=wal",
data: "my://storage?index=idx&store=data&suffix=.car&urlGen=fromEnv",
file: "my://storage?index=idx&store=data&urlGen=fromEnv",
meta: "my://storage?index=idx&store=meta&urlGen=fromEnv",
wal: "my://storage?index=idx&store=wal&urlGen=fromEnv"
},
});
});
Expand All @@ -543,22 +549,24 @@ describe("StoreURIRuntime", () => {
meta: "my://storage-meta",
},
idx: {
data: "my://storage-idx-data?name=yyy&idx=bla",
data: "my://storage-idx-data?name=yyy&index=bla",
meta: "my://storage-idx-meta",
},
}),
),
),
).toEqual({
data: {
data: "my://storage-data?name=yyy&store=data",
data: "my://storage-data?name=yyy&store=data&suffix=.car",
file: "my://storage-data?name=yyy&store=data",
meta: "my://storage-meta?store=meta",
wal: "my://storage-base?name=xxx&store=wal",
},
idx: {
data: "my://storage-idx-data?idx=bla&name=yyy&store=data",
meta: "my://storage-idx-meta?idx=idx&store=meta",
wal: "my://storage-base?idx=idx&name=xxx&store=wal",
data: "my://storage-idx-data?index=bla&name=yyy&store=data&suffix=.car",
file: "my://storage-idx-data?index=bla&name=yyy&store=data",
meta: "my://storage-idx-meta?index=idx&store=meta",
wal: "my://storage-base?index=idx&name=xxx&store=wal",
},
});
});
Expand All @@ -567,14 +575,16 @@ describe("StoreURIRuntime", () => {
sthis.env.delete("FP_STORAGE_URL");
expect(JSON.parse(JSON.stringify(toStoreURIRuntime(sthis, "maxi")))).toEqual({
data: {
data: "murks://fp?name=maxi&store=data",
meta: "murks://fp?name=maxi&store=meta",
wal: "murks://fp?name=maxi&store=wal",
data: "murks://fp?name=maxi&store=data&suffix=.car&urlGen=default",
file: "murks://fp?name=maxi&store=data&urlGen=default",
meta: "murks://fp?name=maxi&store=meta&urlGen=default",
wal: "murks://fp?name=maxi&store=wal&urlGen=default",
},
idx: {
data: "murks://fp?idx=idx&name=maxi&store=data",
meta: "murks://fp?idx=idx&name=maxi&store=meta",
wal: "murks://fp?idx=idx&name=maxi&store=wal",
data: "murks://fp?index=idx&name=maxi&store=data&suffix=.car&urlGen=default",
file: "murks://fp?index=idx&name=maxi&store=data&urlGen=default",
meta: "murks://fp?index=idx&name=maxi&store=meta&urlGen=default",
wal: "murks://fp?index=idx&name=maxi&store=wal&urlGen=default",
},
});
});
Expand All @@ -588,16 +598,18 @@ describe("StoreURIRuntime", () => {
stores: [
{
data: {
data: "my://storage?name=test&store=data",
meta: "my://storage?name=test&store=meta",
wal: "my://storage?name=test&store=wal",
data: "my://storage?name=test&store=data&suffix=.car&urlGen=fromEnv",
file: "my://storage?name=test&store=data&urlGen=fromEnv",
meta: "my://storage?name=test&store=meta&urlGen=fromEnv",
wal: "my://storage?name=test&store=wal&urlGen=fromEnv",
},
},
{
idx: {
data: "my://storage?idx=idx&name=test&store=data",
meta: "my://storage?idx=idx&name=test&store=meta",
wal: "my://storage?idx=idx&name=test&store=wal",
data: "my://storage?index=idx&name=test&store=data&suffix=.car&urlGen=fromEnv",
file: "my://storage?index=idx&name=test&store=data&urlGen=fromEnv",
meta: "my://storage?index=idx&name=test&store=meta&urlGen=fromEnv",
wal: "my://storage?index=idx&name=test&store=wal&urlGen=fromEnv",
},
},
],
Expand Down

0 comments on commit dfea2c9

Please sign in to comment.