-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
224 additions
and
396 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,155 +1,80 @@ | ||
name: Clerk FDW Extension | ||
# name: Prometheus FDW Extension | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
working-directory: ./ | ||
# defaults: | ||
# run: | ||
# shell: bash | ||
# working-directory: ./ | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- main | ||
push: | ||
branches: | ||
- main | ||
release: | ||
types: | ||
- created | ||
# on: | ||
# pull_request: | ||
# branches: | ||
# - main | ||
# push: | ||
# branches: | ||
# - main | ||
# release: | ||
# types: | ||
# - created | ||
|
||
jobs: | ||
lint: | ||
name: Run linters | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Install Rust minimal nightly with clippy and rustfmt | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
profile: minimal | ||
toolchain: nightly | ||
components: rustfmt, clippy | ||
- uses: Swatinem/rust-cache@v2 | ||
with: | ||
prefix-key: "clerk_fdw-extension-lint" | ||
# Update cache directories as needed | ||
cache-directories: | | ||
/home/runner/.pgrx | ||
- uses: ./.github/actions/pgx-init | ||
with: | ||
working-directory: ./ | ||
- name: Cargo format | ||
run: cargo +nightly fmt --all --check | ||
- name: Clippy | ||
run: cargo clippy | ||
# jobs: | ||
# lint: | ||
# name: Run linters | ||
# runs-on: ubuntu-22.04 | ||
# steps: | ||
# - uses: actions/checkout@v3 | ||
# - name: Install Rust minimal nightly with clippy and rustfmt | ||
# uses: actions-rs/toolchain@v1 | ||
# with: | ||
# profile: minimal | ||
# toolchain: nightly | ||
# components: rustfmt, clippy | ||
# - uses: Swatinem/rust-cache@v2 | ||
# with: | ||
# prefix-key: "prometheus_fdw-extension-lint" | ||
# # Update cache directories as needed | ||
# cache-directories: | | ||
# /home/runner/.pgrx | ||
# - uses: ./.github/actions/pgx-init | ||
# with: | ||
# working-directory: ./ | ||
# - name: Cargo format | ||
# run: cargo +nightly fmt --all --check | ||
# - name: Clippy | ||
# run: cargo clippy | ||
|
||
# figure out how to test work | ||
# test: | ||
# name: Run tests | ||
# runs-on: ubuntu-22.04 | ||
# steps: | ||
# - uses: actions/checkout@v2 | ||
# - name: Install Rust stable toolchain | ||
# uses: actions-rs/toolchain@v1 | ||
# with: | ||
# toolchain: stable | ||
# - uses: Swatinem/rust-cache@v2 | ||
# with: | ||
# prefix-key: "pgmq-extension-test" | ||
# workspaces: | | ||
# pgmq | ||
# # Additional directories to cache | ||
# cache-directories: | | ||
# /home/runner/.pgrx | ||
# - uses: ./.github/actions/pgx-init | ||
# with: | ||
# working-directory: ./ | ||
# - name: test | ||
# run: | | ||
# sudo apt-get update && sudo apt-get install -y postgresql-server-dev-14 | ||
# git clone https://github.com/pgpartman/pg_partman.git && \ | ||
# cd pg_partman && \ | ||
# sudo make install && cd ../ | ||
# cp /usr/share/postgresql/14/extension/pg_partman* ~/.pgrx/15.4/pgrx-install/share/postgresql/extension/ | ||
# cp /usr/lib/postgresql/14/lib/pg_partman_bgw.so ~/.pgrx/15.4/pgrx-install/lib/postgresql/ | ||
# rm -rf ./target/pgrx-test-data-* || true | ||
# pg_version=$(stoml Cargo.toml features.default) | ||
# cargo pgrx run ${pg_version} --pgcli || true | ||
# cargo pgrx test ${pg_version} | ||
|
||
publish: | ||
# only publish release events | ||
if: github.event_name == 'release' | ||
name: trunk publish | ||
runs-on: ubuntu-22.04 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: Install Rust stable toolchain | ||
uses: actions-rs/toolchain@v1 | ||
with: | ||
toolchain: stable | ||
- uses: Swatinem/rust-cache@v2 | ||
with: | ||
prefix-key: "clerk_fdw-extension-test" | ||
cache-directories: | | ||
/home/runner/.pgrx | ||
- name: Install stoml and pg-trunk | ||
shell: bash | ||
run: | | ||
set -xe | ||
wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null | ||
mv stoml_linux_amd64 stoml | ||
chmod +x stoml | ||
sudo mv stoml /usr/local/bin/ | ||
cargo install pg-trunk | ||
- name: trunk build | ||
working-directory: ./ | ||
run: trunk build | ||
- name: trunk publish | ||
working-directory: ./ | ||
env: | ||
TRUNK_API_TOKEN: ${{ secrets.TRUNK_AUTH_TOKEN }} | ||
run: | | ||
ext_ver=$(stoml Cargo.toml package.version) | ||
ext_repo=$(stoml Cargo.toml package.repository) | ||
trunk publish clerk_fdw --version ${ext_ver} --file .trunk/clerk_fdw-${ext_ver}.tar.gz --description "Foreign Data wrapper for clerk" --homepage "https://github.com/tembo-io/clerk_fdw" --repository "https://github.com/tembo-io/clerk_fdw" --license "PostgreSQL" --category connectors | ||
# build_and_push: | ||
# name: Build and push images | ||
# needs: | ||
# - publish | ||
# runs-on: | ||
# - self-hosted | ||
# - dind | ||
# - large-8x8 | ||
# outputs: | ||
# short_sha: ${{ steps.versions.outputs.SHORT_SHA }} | ||
# steps: | ||
# - name: Check out the repo | ||
# uses: actions/checkout@v3 | ||
# - name: Install stoml and pg-trunk | ||
# shell: bash | ||
# run: | | ||
# set -xe | ||
# wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null | ||
# mv stoml_linux_amd64 stoml | ||
# chmod +x stoml | ||
# sudo mv stoml /usr/local/bin/ | ||
# - name: Set version strings | ||
# id: versions | ||
# run: | | ||
# echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | ||
# echo "TAG_VER=$(/usr/local/bin/stoml Cargo.toml package.version)" >> $GITHUB_OUTPUT | ||
# - name: Build and upload image | ||
# run: | | ||
# docker build --build-arg="PGMQ_VER=${{ steps.versions.outputs.TAG_VER }}" -t pgmq-pg images/pgmq-pg | ||
# docker tag pgmq-pg quay.io/tembo/pgmq-pg:v${{ steps.versions.outputs.TAG_VER }} | ||
# docker tag pgmq-pg quay.io/tembo/pgmq-pg:latest | ||
# - name: Login to Quay | ||
# uses: docker/login-action@v2 | ||
# with: | ||
# registry: quay.io/tembo | ||
# username: ${{ secrets.QUAY_USER_TEMBO }} | ||
# password: ${{ secrets.QUAY_PASSWORD_TEMBO }} | ||
# - name: Push image | ||
# run: | | ||
# docker push quay.io/tembo/pgmq-pg:v${{ steps.versions.outputs.TAG_VER }} | ||
# docker push quay.io/tembo/pgmq-pg:latest | ||
# publish: | ||
# # only publish release events | ||
# if: github.event_name == 'release' | ||
# name: trunk publish | ||
# runs-on: ubuntu-22.04 | ||
# steps: | ||
# - uses: actions/checkout@v2 | ||
# - name: Install Rust stable toolchain | ||
# uses: actions-rs/toolchain@v1 | ||
# with: | ||
# toolchain: stable | ||
# - uses: Swatinem/rust-cache@v2 | ||
# with: | ||
# prefix-key: "prometheus_fdw-extension-test" | ||
# cache-directories: | | ||
# /home/runner/.pgrx | ||
# - name: Install stoml and pg-trunk | ||
# shell: bash | ||
# run: | | ||
# set -xe | ||
# wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null | ||
# mv stoml_linux_amd64 stoml | ||
# chmod +x stoml | ||
# sudo mv stoml /usr/local/bin/ | ||
# cargo install pg-trunk | ||
# - name: trunk build | ||
# working-directory: ./ | ||
# run: trunk build | ||
# - name: trunk publish | ||
# working-directory: ./ | ||
# env: | ||
# TRUNK_API_TOKEN: ${{ secrets.TRUNK_AUTH_TOKEN }} | ||
# run: | | ||
# ext_ver=$(stoml Cargo.toml package.version) | ||
# ext_repo=$(stoml Cargo.toml package.repository) | ||
# trunk publish prometheus_fdw --version ${ext_ver} --file .trunk/prometheus_fdw-${ext_ver}.tar.gz --description "Foreign Data wrapper for prometheus" --homepage "https://github.com/tembo-io/prometheus_fdw" --repository "https://github.com/tembo-io/prometheus_fdw" --license "PostgreSQL" --category connectors |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,95 +1,53 @@ | ||
## Clerk_fdw | ||
|
||
This section is about how to use the clerk foreign data wrapper in the data warehouse to collect valuable analytics | ||
## Prometheus_fdw | ||
|
||
### Pre-requisistes | ||
|
||
- have the v0.2.2 of `clerk_fdw` extension enabled in your instance | ||
- have the v0.2.2 of `prometheus_fdw` extension enabled in your instance | ||
|
||
`create extension prometheus_fdw;` | ||
|
||
Create the foreign data wrapper: | ||
|
||
``` | ||
create foreign data wrapper clerk_wrapper | ||
handler clerk_fdw_handler | ||
validator clerk_fdw_validator; | ||
create foreign data wrapper prometheus_wrapper | ||
handler prometheus_fdw_handler | ||
validator prometheus_fdw_validator; | ||
``` | ||
|
||
Connect to clerk using your credentials: | ||
|
||
``` | ||
create server my_clerk_server | ||
foreign data wrapper clerk_wrapper | ||
options ( | ||
api_key '<clerk secret Key>') | ||
create server my_prometheus_server | ||
foreign data wrapper prometheus_wrapper; | ||
``` | ||
|
||
Create Foreign Table: | ||
|
||
### User table | ||
|
||
This table will store information about the users. | ||
Note: The current limit is 500 users. This should be increased in future versions. | ||
### Metric Labels Table | ||
|
||
``` | ||
create foreign table clerk_users ( | ||
user_id text, | ||
first_name text, | ||
last_name text, | ||
email text, | ||
gender text, | ||
created_at bigint, | ||
updated_at bigint, | ||
last_sign_in_at bigint, | ||
phone_numbers bigint, | ||
username text | ||
) | ||
server my_clerk_server | ||
options ( | ||
object 'users' | ||
); | ||
``` | ||
|
||
### Organization Table | ||
|
||
This table will store information about the organizations. | ||
Note: The current limit is 500 organizations. This should be increased in future versions. | ||
|
||
``` | ||
create foreign table clerk_organizations ( | ||
organization_id text, | ||
name text, | ||
slug text, | ||
created_at bigint, | ||
updated_at bigint, | ||
created_by text | ||
CREATE FOREIGN TABLE IF NOT EXISTS metric_labels ( | ||
metric_id BIGINT, | ||
metric_name TEXT NOT NULL, | ||
metric_name_label TEXT NOT NULL, | ||
metric_labels jsonb | ||
) | ||
server my_clerk_server | ||
options ( | ||
object 'organizations' | ||
SERVER my_prometheus_server | ||
OPTIONS ( | ||
object 'metric_labels' | ||
); | ||
``` | ||
|
||
### Junction Table | ||
### Metrics Value Table | ||
|
||
This table connects the `clerk_users` and `clerk_orgs`. It lists out all users and their roles in each organization. | ||
NOTE: NEED TO ADD PARTIONTION TO THIS TABLE | ||
|
||
``` | ||
create foreign table clerk_organization_memberships ( | ||
user_id text, | ||
organization_id text, | ||
role text | ||
) | ||
server my_clerk_server | ||
CREATE FOREIGN TABLE IF NOT EXISTS metric_values ( | ||
metric_id BIGINT, | ||
metric_time TIMESTAMPTZ, | ||
metric_value FLOAT8 | ||
) | ||
server my_prometheus_server | ||
options ( | ||
object 'organization_memberships' | ||
object 'metric_values' | ||
); | ||
``` | ||
|
||
NOTE: There is a 0.5 second sleep timer between each request so that we do not overload clerk servers. The reponse might take a while and it is reccomended that you store the information in a local table for quick access. | ||
|
||
Query from the Foreign Table: | ||
`select * from clerk_users` | ||
|
||
To get all members of an organization: | ||
`select * from organization_memberships where organization_id='org_id';` |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
comment = 'prometheus_fdw: A foreign data wrapper for prometheus' | ||
default_version = '@CARGO_VERSION@' | ||
module_pathname = '$libdir/prometheus_fdw' | ||
relocatable = false | ||
superuser = true |
Oops, something went wrong.