Skip to content
Snippets Groups Projects
Commit 6e2df716 authored by Hugo Trentesaux's avatar Hugo Trentesaux
Browse files

Transaction comments (!22)

* revert hasura port

* refac dockerfile

* add blocknumber in txcomment

* wip

* add issuer of remark

* add CID parsing

* separate comment table

* update graphql schema

* wip naive impl

* Make genesis format compatible with different polkadot versions

(cherry picked from commit 59ded148)

* wip light dev environment
parent 14397f1d
Branches
Tags
1 merge request!22Transaction comments
Showing
with 137 additions and 69 deletions
engine-strict=true
# loglevel=notice
\ No newline at end of file
# --- node 20 base image
FROM node:20-alpine AS node
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
# --- dev mode builder
FROM node AS builder
# --- prod dependencies only
FROM node AS deps
WORKDIR /squid
ADD package.json .
ADD package-lock.json .
ADD assets assets
ADD db db
ADD schema.graphql .
RUN npm ci
ADD tsconfig.json .
ADD src src
RUN npm run build
COPY package.json pnpm-lock.yaml .
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod
# --- prod dependencies
FROM node AS deps
# --- dev dependencies to build
FROM deps AS builder
WORKDIR /squid
ADD package.json .
ADD package-lock.json .
RUN npm ci --omit=dev
COPY tsconfig.json .
COPY src src
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install
RUN pnpm build
# # --- use this if you want to download when building docker image
# FROM curlimages/curl AS input
......@@ -36,20 +33,28 @@ COPY /input/ input/
# --- final squid image
FROM node AS squid
WORKDIR /squid
# copy genesis and history
# copy genesis and history (only change on reboot)
COPY --from=input /squid/input input
# copy assets
COPY --from=builder /squid/lib lib
COPY --from=builder /squid/assets assets
COPY --from=builder /squid/db db
COPY --from=builder /squid/schema.graphql schema.graphql
# copy deps
COPY --from=deps /squid/package.json .
COPY --from=deps /squid/package-lock.json .
COPY assets assets
COPY db db
COPY schema.graphql .
# copy prod deps only
COPY --from=deps /squid/node_modules node_modules
# copy build
COPY --from=builder /squid/lib lib
# copy scripts
COPY /scripts/ scripts/
ADD commands.json .
RUN echo -e "loglevel=silent\\nupdate-notifier=false" > /squid/.npmrc
COPY commands.json .
# it seems not to work with pnpm installed version. `pnpm exec squid-commands` does not work
RUN npm i -g @subsquid/commands && mv $(which squid-commands) /usr/local/bin/sqd
ENV PROCESSOR_PROMETHEUS_PORT 3000
\ No newline at end of file
# environment variables
# ENV PROCESSOR_PROMETHEUS_PORT 3000
ENV GENESIS_FILE "./input/gdev.json"
ENV HIST_GEN_FILE "./input/genesis.json"
ENV HIST_BLOCK_FILE "./input/block_hist.json"
ENV HIST_TX_FILE "./input/tx_hist.json"
ENV HIST_CERT_FILE "./input/cert_hist.json"
# ENTRYPOINT ["pnpm", "exec", "squid-commands", "process:prod"]
\ No newline at end of file
......@@ -54,7 +54,7 @@ TL;DR
```sh
# reboot the database
sqd down && sqd up
# after modifying typegen.json
# after modifying typegen.json or metadata
sqd typegen
# after modifying schema.graphql (need `sqd build` first time for hasura export metadata)
sqd db:update
......@@ -109,7 +109,7 @@ We don't need to use npx commands listed above. We can use these `sqd` shortcut
```bash
# Export Hasura metadata with compiled js script `lib/generateHasuraMetadata.js`
sqd hasura:export
sqd hasura:generate
# Apply metadata with command `hasura metadata apply`
sqd hasura:apply
......
......@@ -3,3 +3,4 @@ DROP TABLE IF EXISTS counter_level;
DROP TABLE IF EXISTS identity_status;
DROP TABLE IF EXISTS smith_status;
DROP TABLE IF EXISTS event_type;
DROP TABLE IF EXISTS comment_type;
......@@ -34,3 +34,10 @@ ALTER TABLE cert_event DROP COLUMN IF EXISTS event_type;
ALTER TABLE cert_event ADD COLUMN event_type TEXT REFERENCES event_type(value);
ALTER TABLE membership_event DROP COLUMN IF EXISTS event_type;
ALTER TABLE membership_event ADD COLUMN event_type TEXT REFERENCES event_type(value);
CREATE TABLE comment_type (value TEXT PRIMARY KEY);
INSERT INTO comment_type (value) VALUES ('Cid');
INSERT INTO comment_type (value) VALUES ('Ascii');
INSERT INTO comment_type (value) VALUES ('Unicode');
INSERT INTO comment_type (value) VALUES ('Raw');
ALTER TABLE tx_comment DROP COLUMN IF EXISTS type;
ALTER TABLE tx_comment ADD COLUMN type TEXT REFERENCES comment_type(value);
version: 3
endpoint: http://localhost:8080 # inside docker
metadata_directory: hasura/metadata
migrations_directory: hasura/migrations
seeds_directory: hasura/seeds
module.exports = class Data1713972569027 {
name = 'Data1713972569027'
module.exports = class Data1717671693690 {
name = 'Data1717671693690'
async up(db) {
await db.query(`CREATE TABLE "event" ("id" character varying NOT NULL, "index" integer NOT NULL, "phase" text NOT NULL, "pallet" text NOT NULL, "name" text NOT NULL, "args" jsonb, "args_str" text array, "block_id" character varying, "extrinsic_id" character varying, "call_id" character varying, CONSTRAINT "PK_30c2f3bbaf6d34a55f8ae6e4614" PRIMARY KEY ("id"))`)
......@@ -32,12 +32,6 @@ module.exports = class Data1713972569027 {
await db.query(`CREATE INDEX "IDX_68d2eadecb3eeb540d2004acef" ON "items_counter" ("type") `)
await db.query(`CREATE INDEX "IDX_1d9be1d79f197d42dd163f86c8" ON "items_counter" ("level") `)
await db.query(`CREATE INDEX "IDX_e03dd1c60ac7622914f72ac2f1" ON "items_counter" ("total") `)
await db.query(`CREATE TABLE "transfer" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "amount" numeric NOT NULL, "comment" text, "from_id" character varying, "to_id" character varying, CONSTRAINT "PK_fd9ddbdd49a17afcbe014401295" PRIMARY KEY ("id"))`)
await db.query(`CREATE INDEX "IDX_d6624eacc30144ea97915fe846" ON "transfer" ("block_number") `)
await db.query(`CREATE INDEX "IDX_70ff8b624c3118ac3a4862d22c" ON "transfer" ("timestamp") `)
await db.query(`CREATE INDEX "IDX_76bdfed1a7eb27c6d8ecbb7349" ON "transfer" ("from_id") `)
await db.query(`CREATE INDEX "IDX_0751309c66e97eac9ef1149362" ON "transfer" ("to_id") `)
await db.query(`CREATE INDEX "IDX_f4007436c1b546ede08a4fd7ab" ON "transfer" ("amount") `)
await db.query(`CREATE TABLE "cert_event" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "event_type" character varying(8) NOT NULL, "cert_id" character varying, "event_id" character varying, CONSTRAINT "PK_cb04492d319a579bebcd3aeed21" PRIMARY KEY ("id"))`)
await db.query(`CREATE INDEX "IDX_d2bc74ffa9c2571da03670f2c8" ON "cert_event" ("cert_id") `)
await db.query(`CREATE INDEX "IDX_411c2bb1469a8a96762ceb00ae" ON "cert_event" ("event_id") `)
......@@ -66,6 +60,17 @@ module.exports = class Data1713972569027 {
await db.query(`CREATE INDEX "IDX_883ba5be237fba47f2a2f39145" ON "identity" ("name") `)
await db.query(`CREATE INDEX "IDX_ee232f862b258f533e70bbb24d" ON "identity" ("status") `)
await db.query(`CREATE INDEX "IDX_666fdfaf3a12c96e95ab0a0b31" ON "identity" ("created_in_id") `)
await db.query(`CREATE TABLE "tx_comment" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "remark_bytes" bytea NOT NULL, "remark" text NOT NULL, "hash" text NOT NULL, "type" character varying(7) NOT NULL, "author_id" character varying, "event_id" character varying, CONSTRAINT "PK_b3a5d319e82e6b17886eb15cad8" PRIMARY KEY ("id"))`)
await db.query(`CREATE INDEX "IDX_39157ef296298a13cb591f8aba" ON "tx_comment" ("author_id") `)
await db.query(`CREATE INDEX "IDX_7c33e1189dfd717140393b2e30" ON "tx_comment" ("event_id") `)
await db.query(`CREATE TABLE "transfer" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "amount" numeric NOT NULL, "from_id" character varying, "to_id" character varying, "event_id" character varying, "comment_id" character varying, CONSTRAINT "PK_fd9ddbdd49a17afcbe014401295" PRIMARY KEY ("id"))`)
await db.query(`CREATE INDEX "IDX_d6624eacc30144ea97915fe846" ON "transfer" ("block_number") `)
await db.query(`CREATE INDEX "IDX_70ff8b624c3118ac3a4862d22c" ON "transfer" ("timestamp") `)
await db.query(`CREATE INDEX "IDX_76bdfed1a7eb27c6d8ecbb7349" ON "transfer" ("from_id") `)
await db.query(`CREATE INDEX "IDX_0751309c66e97eac9ef1149362" ON "transfer" ("to_id") `)
await db.query(`CREATE INDEX "IDX_f4007436c1b546ede08a4fd7ab" ON "transfer" ("amount") `)
await db.query(`CREATE INDEX "IDX_2a4e1dce9f72514cd28f554ee2" ON "transfer" ("event_id") `)
await db.query(`CREATE INDEX "IDX_76cf30dd4464ed95ad44c5bb61" ON "transfer" ("comment_id") `)
await db.query(`CREATE TABLE "account" ("id" character varying NOT NULL, "linked_identity_id" character varying, CONSTRAINT "PK_54115ee388cdb6d86bb4bf5b2ea" PRIMARY KEY ("id"))`)
await db.query(`CREATE INDEX "IDX_73d14d249a6dcf9abe42eaa657" ON "account" ("linked_identity_id") `)
await db.query(`CREATE TABLE "universal_dividend" ("id" character varying NOT NULL, "block_number" integer NOT NULL, "timestamp" TIMESTAMP WITH TIME ZONE NOT NULL, "amount" integer NOT NULL, "monetary_mass" numeric NOT NULL, "members_count" integer NOT NULL, "event_id" character varying, CONSTRAINT "PK_f7557418097ca486e193ded801c" PRIMARY KEY ("id"))`)
......@@ -80,8 +85,6 @@ module.exports = class Data1713972569027 {
await db.query(`ALTER TABLE "call" ADD CONSTRAINT "FK_11c1e76d5be8f04c472c4a05b95" FOREIGN KEY ("parent_id") REFERENCES "call"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "extrinsic" ADD CONSTRAINT "FK_a3b99daba1259dab0dd040d4f74" FOREIGN KEY ("block_id") REFERENCES "block"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "extrinsic" ADD CONSTRAINT "FK_824d47cc4b2cda726405aa507ca" FOREIGN KEY ("call_id") REFERENCES "call"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "transfer" ADD CONSTRAINT "FK_76bdfed1a7eb27c6d8ecbb73496" FOREIGN KEY ("from_id") REFERENCES "account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "transfer" ADD CONSTRAINT "FK_0751309c66e97eac9ef11493623" FOREIGN KEY ("to_id") REFERENCES "account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "cert_event" ADD CONSTRAINT "FK_d2bc74ffa9c2571da03670f2c8e" FOREIGN KEY ("cert_id") REFERENCES "cert"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "cert_event" ADD CONSTRAINT "FK_411c2bb1469a8a96762ceb00ae6" FOREIGN KEY ("event_id") REFERENCES "event"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "cert" ADD CONSTRAINT "FK_70592e488b2e75cd8a2fa798261" FOREIGN KEY ("issuer_id") REFERENCES "identity"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
......@@ -98,6 +101,12 @@ module.exports = class Data1713972569027 {
await db.query(`ALTER TABLE "ud_history" ADD CONSTRAINT "FK_a481d5b96ba0e6d8237dc733a31" FOREIGN KEY ("identity_id") REFERENCES "identity"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "identity" ADD CONSTRAINT "FK_bafa9e6c71c3f69cef6602a8095" FOREIGN KEY ("account_id") REFERENCES "account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "identity" ADD CONSTRAINT "FK_666fdfaf3a12c96e95ab0a0b31c" FOREIGN KEY ("created_in_id") REFERENCES "event"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "tx_comment" ADD CONSTRAINT "FK_39157ef296298a13cb591f8abab" FOREIGN KEY ("author_id") REFERENCES "account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "tx_comment" ADD CONSTRAINT "FK_7c33e1189dfd717140393b2e30d" FOREIGN KEY ("event_id") REFERENCES "event"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "transfer" ADD CONSTRAINT "FK_76bdfed1a7eb27c6d8ecbb73496" FOREIGN KEY ("from_id") REFERENCES "account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "transfer" ADD CONSTRAINT "FK_0751309c66e97eac9ef11493623" FOREIGN KEY ("to_id") REFERENCES "account"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "transfer" ADD CONSTRAINT "FK_2a4e1dce9f72514cd28f554ee2d" FOREIGN KEY ("event_id") REFERENCES "event"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "transfer" ADD CONSTRAINT "FK_76cf30dd4464ed95ad44c5bb616" FOREIGN KEY ("comment_id") REFERENCES "tx_comment"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "account" ADD CONSTRAINT "FK_73d14d249a6dcf9abe42eaa6573" FOREIGN KEY ("linked_identity_id") REFERENCES "identity"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "universal_dividend" ADD CONSTRAINT "FK_ad1b348c17129da2cc28fceb830" FOREIGN KEY ("event_id") REFERENCES "event"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
await db.query(`ALTER TABLE "ud_reeval" ADD CONSTRAINT "FK_38a22f60573ad32c42ca0c2c111" FOREIGN KEY ("event_id") REFERENCES "event"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`)
......@@ -134,12 +143,6 @@ module.exports = class Data1713972569027 {
await db.query(`DROP INDEX "public"."IDX_68d2eadecb3eeb540d2004acef"`)
await db.query(`DROP INDEX "public"."IDX_1d9be1d79f197d42dd163f86c8"`)
await db.query(`DROP INDEX "public"."IDX_e03dd1c60ac7622914f72ac2f1"`)
await db.query(`DROP TABLE "transfer"`)
await db.query(`DROP INDEX "public"."IDX_d6624eacc30144ea97915fe846"`)
await db.query(`DROP INDEX "public"."IDX_70ff8b624c3118ac3a4862d22c"`)
await db.query(`DROP INDEX "public"."IDX_76bdfed1a7eb27c6d8ecbb7349"`)
await db.query(`DROP INDEX "public"."IDX_0751309c66e97eac9ef1149362"`)
await db.query(`DROP INDEX "public"."IDX_f4007436c1b546ede08a4fd7ab"`)
await db.query(`DROP TABLE "cert_event"`)
await db.query(`DROP INDEX "public"."IDX_d2bc74ffa9c2571da03670f2c8"`)
await db.query(`DROP INDEX "public"."IDX_411c2bb1469a8a96762ceb00ae"`)
......@@ -168,6 +171,17 @@ module.exports = class Data1713972569027 {
await db.query(`DROP INDEX "public"."IDX_883ba5be237fba47f2a2f39145"`)
await db.query(`DROP INDEX "public"."IDX_ee232f862b258f533e70bbb24d"`)
await db.query(`DROP INDEX "public"."IDX_666fdfaf3a12c96e95ab0a0b31"`)
await db.query(`DROP TABLE "tx_comment"`)
await db.query(`DROP INDEX "public"."IDX_39157ef296298a13cb591f8aba"`)
await db.query(`DROP INDEX "public"."IDX_7c33e1189dfd717140393b2e30"`)
await db.query(`DROP TABLE "transfer"`)
await db.query(`DROP INDEX "public"."IDX_d6624eacc30144ea97915fe846"`)
await db.query(`DROP INDEX "public"."IDX_70ff8b624c3118ac3a4862d22c"`)
await db.query(`DROP INDEX "public"."IDX_76bdfed1a7eb27c6d8ecbb7349"`)
await db.query(`DROP INDEX "public"."IDX_0751309c66e97eac9ef1149362"`)
await db.query(`DROP INDEX "public"."IDX_f4007436c1b546ede08a4fd7ab"`)
await db.query(`DROP INDEX "public"."IDX_2a4e1dce9f72514cd28f554ee2"`)
await db.query(`DROP INDEX "public"."IDX_76cf30dd4464ed95ad44c5bb61"`)
await db.query(`DROP TABLE "account"`)
await db.query(`DROP INDEX "public"."IDX_73d14d249a6dcf9abe42eaa657"`)
await db.query(`DROP TABLE "universal_dividend"`)
......@@ -182,8 +196,6 @@ module.exports = class Data1713972569027 {
await db.query(`ALTER TABLE "call" DROP CONSTRAINT "FK_11c1e76d5be8f04c472c4a05b95"`)
await db.query(`ALTER TABLE "extrinsic" DROP CONSTRAINT "FK_a3b99daba1259dab0dd040d4f74"`)
await db.query(`ALTER TABLE "extrinsic" DROP CONSTRAINT "FK_824d47cc4b2cda726405aa507ca"`)
await db.query(`ALTER TABLE "transfer" DROP CONSTRAINT "FK_76bdfed1a7eb27c6d8ecbb73496"`)
await db.query(`ALTER TABLE "transfer" DROP CONSTRAINT "FK_0751309c66e97eac9ef11493623"`)
await db.query(`ALTER TABLE "cert_event" DROP CONSTRAINT "FK_d2bc74ffa9c2571da03670f2c8e"`)
await db.query(`ALTER TABLE "cert_event" DROP CONSTRAINT "FK_411c2bb1469a8a96762ceb00ae6"`)
await db.query(`ALTER TABLE "cert" DROP CONSTRAINT "FK_70592e488b2e75cd8a2fa798261"`)
......@@ -200,6 +212,12 @@ module.exports = class Data1713972569027 {
await db.query(`ALTER TABLE "ud_history" DROP CONSTRAINT "FK_a481d5b96ba0e6d8237dc733a31"`)
await db.query(`ALTER TABLE "identity" DROP CONSTRAINT "FK_bafa9e6c71c3f69cef6602a8095"`)
await db.query(`ALTER TABLE "identity" DROP CONSTRAINT "FK_666fdfaf3a12c96e95ab0a0b31c"`)
await db.query(`ALTER TABLE "tx_comment" DROP CONSTRAINT "FK_39157ef296298a13cb591f8abab"`)
await db.query(`ALTER TABLE "tx_comment" DROP CONSTRAINT "FK_7c33e1189dfd717140393b2e30d"`)
await db.query(`ALTER TABLE "transfer" DROP CONSTRAINT "FK_76bdfed1a7eb27c6d8ecbb73496"`)
await db.query(`ALTER TABLE "transfer" DROP CONSTRAINT "FK_0751309c66e97eac9ef11493623"`)
await db.query(`ALTER TABLE "transfer" DROP CONSTRAINT "FK_2a4e1dce9f72514cd28f554ee2d"`)
await db.query(`ALTER TABLE "transfer" DROP CONSTRAINT "FK_76cf30dd4464ed95ad44c5bb616"`)
await db.query(`ALTER TABLE "account" DROP CONSTRAINT "FK_73d14d249a6dcf9abe42eaa6573"`)
await db.query(`ALTER TABLE "universal_dividend" DROP CONSTRAINT "FK_ad1b348c17129da2cc28fceb830"`)
await db.query(`ALTER TABLE "ud_reeval" DROP CONSTRAINT "FK_38a22f60573ad32c42ca0c2c111"`)
......
const fs = require("fs");
module.exports = class EnumsMigration1713972689052 {
name = "EnumsMigration1713972689052";
module.exports = class EnumsMigration1717671813708 {
name = "EnumsMigration1717671813708";
async up(db) {
await db.query(fs.readFileSync("assets/sql/EnumsMigration_up.sql", "utf8"));
......
const fs = require("fs");
module.exports = class udHistoryFunction1713972689052 {
name = "udHistoryFunction1713972689052";
module.exports = class udHistoryFunction1717671813708 {
name = "udHistoryFunction1717671813708";
async up(db) {
await db.query(fs.readFileSync("assets/sql/udHistoryFunction_up.sql", "utf8"));
......
version: "3"
services:
db:
image: postgres:15
......
version: "3"
services:
# squid processor eating date from duniter archive (RPC_ENDPOINT) and putting them in db
processor:
image: h30x/duniter-squid
image: h30x/duniter-squid:latest
depends_on:
db:
condition: service_healthy
......@@ -17,18 +16,11 @@ services:
- DB_HOST=db
- DB_PASS=${DB_PASSWORD}
- RPC_ENDPOINT=${RPC_ENDPOINT}
- GENESIS_FILE=${GENESIS_FILE}
- HIST_GEN_FILE=${HIST_GEN_FILE}
- HIST_BLOCK_FILE=${HIST_BLOCK_FILE}
- HIST_TX_FILE=${HIST_TX_FILE}
- HIST_CERT_FILE=${HIST_CERT_FILE}
# ports:
# prometheus metrics exposed at port 3000
# - "3000:3000"
command: ["sqd", "process:prod"]
command: ["sqd", "process:prod"] # migration and node start
networks:
- default
- duniter
# postgres database
db:
image: postgres:15
volumes:
......@@ -41,6 +33,7 @@ services:
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
# hasura eating in db and giving graphql
hasura-squid:
image: h30x/duniter-squid-hasura:latest
depends_on:
......
......@@ -13,6 +13,13 @@ object_relationships:
using:
foreign_key_constraint_on: linked_identity_id
array_relationships:
- name: wasIdentity
using:
foreign_key_constraint_on:
column: previous_id
table:
name: change_owner_key
schema: public
- name: transfersIssued
using:
foreign_key_constraint_on:
......@@ -27,12 +34,12 @@ array_relationships:
table:
name: transfer
schema: public
- name: wasIdentity
- name: commentsIssued
using:
foreign_key_constraint_on:
column: previous_id
column: author_id
table:
name: change_owner_key
name: tx_comment
schema: public
select_permissions:
- role: public
......
table:
schema: public
name: comment_type
is_enum: true
......@@ -8,6 +8,12 @@ object_relationships:
- name: to
using:
foreign_key_constraint_on: to_id
- name: event
using:
foreign_key_constraint_on: event_id
- name: comment
using:
foreign_key_constraint_on: comment_id
array_relationships: []
select_permissions:
- role: public
......
table:
name: tx_comment
schema: public
object_relationships:
- name: author
using:
foreign_key_constraint_on: author_id
- name: event
using:
foreign_key_constraint_on: event_id
array_relationships: []
select_permissions:
- role: public
permission:
columns: '*'
filter: {}
allow_aggregations: true
......@@ -19,4 +19,6 @@
- "!include public_universal_dividend.yaml"
- "!include public_ud_reeval.yaml"
- "!include public_ud_history.yaml"
- "!include public_tx_comment.yaml"
- "!include public_enum_comment_type.yaml"
- "!include public_migrations.yaml"
\ No newline at end of file
......@@ -5,3 +5,11 @@ Get data with
```sh
sqd download-genesis
```
You can use `/input/fake/*` directory for light empty history.
For new `gdev.json`, do:
```sh
duniter build-spec --chain=dev > ./input/fake/gdev.json
```
\ No newline at end of file
[]
\ No newline at end of file
[]
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment