Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add standalone MPR postgres module #41

Merged
merged 18 commits into from
Dec 24, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
71eb74e
feat: Initial commit add standalone MPR postgress module
gabrielmatau79 Dec 18, 2024
c8d3cf8
refactor: Resolve the requested changes regarding module configuratio…
gabrielmatau79 Dec 18, 2024
e3a532d
refactor: Resolve the requested changes regarding the refactoring of …
gabrielmatau79 Dec 18, 2024
99f4fb2
feat: Resolve the requested changes regarding the introduction of a c…
gabrielmatau79 Dec 18, 2024
a20acf9
fix: fix export class into package/postgress/index.ts
gabrielmatau79 Dec 18, 2024
3d66932
fix: fix name packages postgres
gabrielmatau79 Dec 19, 2024
23852ae
refactor: Resolve the requested changes in variable names and type ex…
gabrielmatau79 Dec 19, 2024
a57ab7e
feat: add release configuration and encapsulated in an options object…
gabrielmatau79 Dec 19, 2024
2decf51
docs: Add documentation for using the PostgresMessagePickupRepository
gabrielmatau79 Dec 19, 2024
d07f5bc
fix: fix request changes about package.json and remove fcmServiceBaseUrl
gabrielmatau79 Dec 19, 2024
739e45f
fix: Fix description package.json
gabrielmatau79 Dec 19, 2024
1aceb9c
fix: fix querys sql into dbcollections.ts
gabrielmatau79 Dec 20, 2024
2061999
fix: remove conditionial 'this.instance' to publish message when live…
gabrielmatau79 Dec 20, 2024
fe221a6
refactor: The table names are changed to livesession and queuedmessage.
gabrielmatau79 Dec 20, 2024
4621818
fix: fix include indexMessageTable in buildPgDatabase
gabrielmatau79 Dec 20, 2024
8f86e72
chore: fix names, simplify example in README
genaris Dec 24, 2024
7493cbe
style: ignore CHANGELOG
genaris Dec 24, 2024
e2ae0ad
revert: changes in CHANGELOG
genaris Dec 24, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions packages/postgress/config/constants.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { LogLevel } from '@credo-ts/core'
import dotenv from 'dotenv'

dotenv.config()

export const AGENT_PORT = Number(process.env.AGENT_PORT || 4000)
export const AGENT_LOG_LEVEL = process.env.AGENT_LOG_LEVEL ? Number(process.env.AGENT_LOG_LEVEL) : LogLevel.debug

export const AGENT_NAME = process.env.AGENT_NAME || 'Test Cloud Agent'
export const AGENT_ENDPOINTS = process.env.AGENT_ENDPOINTS?.replace(' ', '').split(',') || ['ws://localhost:4000']
export const AGENT_PUBLIC_DID = process.env.AGENT_PUBLIC_DID
export const HTTP_SUPPORT = Boolean(process.env.HTTP_SUPPORT ?? true)
export const WS_SUPPORT = Boolean(process.env.WS_SUPPORT ?? true)

// Wallet
export const WALLET_NAME = process.env.WALLET_NAME || 'test-cloud-agent'
export const WALLET_KEY = process.env.WALLET_KEY || 'Test Cloud Agent'
export const KEY_DERIVATION_METHOD = process.env.KEY_DERIVATION_METHOD
export const POSTGRES_HOST = process.env.POSTGRES_HOST
export const POSTGRES_USER = process.env.POSTGRES_USER
export const POSTGRES_PASSWORD = process.env.POSTGRES_PASSWORD
export const POSTGRES_ADMIN_USER = process.env.POSTGRES_ADMIN_USER
export const POSTGRES_ADMIN_PASSWORD = process.env.POSTGRES_ADMIN_PASSWORD

export enum MessageState {
pending = 'pending',
sending = 'sending',
}

// FCM variables build url
export const FCM_SERVICE_BASE_URL =
process.env.FCM_SERVICE_BASE_URL || 'http://localhost:3001/fcm/fcmNotificationSender/send'
27 changes: 27 additions & 0 deletions packages/postgress/config/dbCollections.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
export const tableNameMessage = 'storequeuedmessage'

export const createTableMessage = `
CREATE TABLE IF NOT EXISTS ${tableNameMessage} (
id VARCHAR(20) DEFAULT substr(md5(random()::text), 1, 20) PRIMARY KEY,
connectionId VARCHAR(255),
recipientKeys TEXT[],
encryptedMessage JSONB,
state VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX IF NOT EXISTS "${tableNameMessage}_connectionId_index" ON "queuedmessages" (connectionId);
CREATE INDEX IF NOT EXISTS "${tableNameMessage}_created_at_index" ON "queuedmessages" (created_at);
`

export const tableNameLive = 'storelivesession'

export const createTableLive = `
CREATE TABLE IF NOT EXISTS ${tableNameLive} (
sessionid VARCHAR(255) PRIMARY KEY,
connectionid VARCHAR(50),
instance VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX IF NOT EXISTS "${tableNameLive}_connectionid" ON "${tableNameLive}" USING btree ("connectionid");`
21 changes: 21 additions & 0 deletions packages/postgress/jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import type { Config } from '@jest/types'

const config: Config.InitialOptions = {
preset: 'ts-jest',
testEnvironment: 'node',
coveragePathIgnorePatterns: ['/build/', '/node_modules/', '/__tests__/', 'tests'],
coverageDirectory: '<rootDir>/coverage/',
testMatch: ['**/?(*.)+(spec|test).[tj]s?(x)'],
transform: {
'^.+\\.tsx?$': [
'ts-jest',
{
isolatedModules: true,
},
],
'^.+\\.jsx?$': require.resolve('babel-jest'),
},
moduleNameMapper: { '^uuid$': 'uuid' },
}

export default config
46 changes: 46 additions & 0 deletions packages/postgress/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{
"name": "@2060.io/credo-ts-message-pickup-repository-pg",
"main": "build/index",
"types": "build/index",
"version": "0.0.1",
"files": [
"build"
],
"publishConfig": {
"access": "public"
},
"description": "Message Pickup Repository postgress module",
"license": "Apache-2.0",
"homepage": "https://github.com/2060-io/message-pickup-repository/tree/main/packages/postgress",
"repository": {
"type": "git",
"url": "https://github.com/2060-io/message-pickup-repository",
"directory": "packages/postgress"
},
"scripts": {
"build": "yarn run clean && yarn run compile",
"clean": "rimraf -rf ./build",
"compile": "tsc -p tsconfig.build.json",
"prepublishOnly": "yarn run build",
"test": "jest"
},
"dependencies": {
"@credo-ts/core": "^0.5.11",
"loglevel": "^1.8.0",
"pg": "^8.11.3",
"pg-pubsub": "^0.8.1",
"typescript": "^4.0.0"
},
"devDependencies": {
"@types/node": "^16.0.0",
"@types/pg": "^8.11.10",
"jest": "^27.0.0",
"ts-jest": "^27.0.0",
"ts-loader": "^9.0.0",
"webpack": "^5.0.0",
"webpack-cli": "^4.0.0"
},
"peerDependencies": {
"@credo-ts/core": "^0.5.11"
}
}
Loading
Loading