Skip to content
Merged
2 changes: 1 addition & 1 deletion packages/core-pglite/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"format": "prettier --write 'src/**/*.ts'",
"lint": "eslint src/**/*.ts && prettier --check src",
"prePublishOnly": "yarn build",
"test": "node --experimental-vm-modules node_modules/.bin/jest"
"test": "NODE_OPTIONS='--experimental-vm-modules' jest"
},
"dependencies": {
"@electric-sql/pglite": "^0.3.5",
Expand Down
2 changes: 1 addition & 1 deletion packages/core-pglite/src/PGlitePersistenceAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ type PGliteDeferredEventRow = {
*/
export class PGlitePersistenceAdapter extends PersistenceAdapter<PGlite> {
public readonly component = 'persistence';
public readonly type = 'pg';
public readonly type = 'pglite';

public constructor(
public readonly pool: PGlite,
Expand Down
3 changes: 3 additions & 0 deletions packages/digest-pglite/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# XJog PGlite Digest Persistence

Package provides a PGlite persistence layer for XJog digest module.
6 changes: 6 additions & 0 deletions packages/digest-pglite/jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const baseConfig = require('../jestconfig.base');

module.exports = {
...baseConfig,
rootDir: 'src',
};
40 changes: 40 additions & 0 deletions packages/digest-pglite/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"name": "@samihult/xjog-digest-pglite",
"version": "0.0.1",
"description": "Digest package with PGlite backend",
"author": "Juha Mustonen <juha.mustonen@iki.fi>",
"homepage": "",
"license": "MIT",
"main": "lib/digest-pglite.js",
"directories": {
"lib": "lib"
},
"files": [
"lib"
],
"scripts": {
"build": "yarn build:bin ; yarn build:files",
"build:bin": "tsc",
"lint": "eslint src/**/*.ts && prettier --check src",
"build:files": "cpx-fixed 'src/**/*.sql' lib",
"clean": "rm -rf node_modules lib",
"test": "NODE_OPTIONS='--experimental-vm-modules' jest"
},
"dependencies": {
"@electric-sql/pglite": "^0.3.5"
},
"devDependencies": {
"cpx-fixed": "^1.6.0",
"@swc/cli": "^0.1.57",
"@swc/core": "^1.2.223",
"@swc/jest": "^0.2.22",
"@types/node": "^16.7.10",
"@types/jest": "^27.0.1",
"jest": "^28.1.2",
"ts-node": "^10.7.0",
"prettier": "^2.3.2",
"typescript": "^4.7.4",
"eslint": "^8.25.0",
"eslint-config-prettier": "^8.5.0"
}
}
56 changes: 56 additions & 0 deletions packages/digest-pglite/src/PGliteDigestPersistenceAdapter.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import { ChartReference } from '@samihult/xjog-util';
import { PGliteDigestPersistenceAdapter } from './PGliteDigestPersistenceAdapter';

describe('PGliteDigestPersistenceAdapter', () => {
const chartReference: ChartReference = {
machineId: 'test',
chartId: 'test',
};

it('should be defined', () => {
expect(PGliteDigestPersistenceAdapter).toBeDefined();
});

it('should be able to connect to a migrated database', async () => {
const adapter = await PGliteDigestPersistenceAdapter.connect();
expect(adapter).toBeDefined();
});

it('should read digest', async () => {
const adapter = await PGliteDigestPersistenceAdapter.connect();
await adapter.record(chartReference, { foo: 'bar' });

const result = await adapter.readDigest(chartReference, 'foo');
expect(result).toMatchObject({
key: 'foo',
value: 'bar',
ref: chartReference,
created: expect.any(Number),
timestamp: expect.any(Number),
});
});

it('should clear digest', async () => {
const testAdapter = await PGliteDigestPersistenceAdapter.connect();

await testAdapter.record(chartReference, { foo: 'bar' });
expect(
testAdapter.readDigest(chartReference, 'foo'),
).resolves.toBeDefined();

await testAdapter.clear(chartReference, ['foo']);
expect(testAdapter.readDigest(chartReference, 'foo')).resolves.toBeNull();
});

it('should filter digests', async () => {
const testAdapter = await PGliteDigestPersistenceAdapter.connect();
await testAdapter.record(chartReference, { foo: 'bar' });
await testAdapter.record(chartReference, { foo: 'baz' });

const result = await testAdapter.queryDigests();
expect(result).toHaveLength(1);
expect(result[0].chartId).toBe(chartReference.chartId);
expect(result[0].machineId).toBe(chartReference.machineId);
expect(result[0].timestamp).toBeDefined();
});
});
Loading
Loading