- import all enums for database migrations (check constraints)

- npm updates
This commit is contained in:
Kaimbacher 2023-09-11 16:10:37 +02:00
parent 6fa22aad9b
commit 3ea2e8ca94
7 changed files with 212 additions and 76 deletions

View File

@ -99,7 +99,7 @@ export default class CreateDatasetValidator {
files: schema.array([rules.minLength(1)]).members( files: schema.array([rules.minLength(1)]).members(
schema.file({ schema.file({
size: '100mb', size: '100mb',
extnames: ['jpg', 'gif', 'png', 'tif'], extnames: ['jpg', 'gif', 'png', 'tif', 'pdf'],
}), }),
), ),
// upload: schema.object().members({ // upload: schema.object().members({

View File

@ -101,3 +101,12 @@ export enum RelationTypes {
Compiles = 'Compiles', Compiles = 'Compiles',
IsVariantFormOf = 'IsVariantFormOf', IsVariantFormOf = 'IsVariantFormOf',
} }
export enum IdentifierTypes {
doi = 'doi',
handle = 'handle',
isbn = 'isbn',
issn = 'issn',
url = 'url',
urn = 'urn',
}

View File

@ -19,7 +19,7 @@ export default class Documents extends BaseSchema {
.inTable('projects') .inTable('projects')
.onDelete('NO ACTION') // don't delete this doc when project is deleted .onDelete('NO ACTION') // don't delete this doc when project is deleted
.onUpdate('NO ACTION'); .onUpdate('NO ACTION');
table.enum('type', Object.values(DatasetTypes)).notNullable(); table.enum('type', Object.keys(DatasetTypes)).notNullable();
table.string('language').notNullable(); table.string('language').notNullable();
table.enum('server_state', Object.values(ServerStates)).notNullable().defaultTo("'inprogress'"); table.enum('server_state', Object.values(ServerStates)).notNullable().defaultTo("'inprogress'");
table.boolean('belongs_to_bibliography').notNullable().defaultTo(false); table.boolean('belongs_to_bibliography').notNullable().defaultTo(false);

View File

@ -0,0 +1,51 @@
import BaseSchema from '@ioc:Adonis/Lucid/Schema';
import { RelationTypes, ReferenceIdentifierTypes } from 'Contracts/enums';
export default class DocumentReferences extends BaseSchema {
protected tableName = 'document_references';
public async up() {
this.schema.createTable(this.tableName, (table) => {
table.increments('id').primary().defaultTo("nextval('document_references_id_seq')");
table.integer('document_id').unsigned().notNullable();
table
.foreign('document_id', 'document_references_document_id_foreign')
.references('id')
.inTable('documents')
.onDelete('CASCADE') // delete this reference when document is deleted
.onUpdate('CASCADE');
// table.string('type').notNullable();
table.enum('type', Object.keys(ReferenceIdentifierTypes)).notNullable();
// table.string('relation').notNullable();
table.enum('relation', Object.keys(RelationTypes)).notNullable();
table.string('value').notNullable();
table.string('label').notNullable();
table.timestamp('created_at', { useTz: false }).nullable();
table.timestamp('updated_at', { useTz: false }).nullable();
});
}
public async down() {
this.schema.dropTable(this.tableName);
}
}
// -- Table: document_references
// CREATE TABLE IF NOT EXISTS document_references
// (
// id integer NOT NULL DEFAULT nextval('document_references_id_seq'::regclass),
// document_id integer NOT NULL,
// type character varying(255) NOT NULL,
// relation character varying(255) NOT NULL,
// value character varying(255) NOT NULL,
// label character varying(255) NOT NULL,
// created_at timestamp(0) without time zone,
// updated_at timestamp(0) without time zone,
// CONSTRAINT document_references_pkey PRIMARY KEY (id),
// CONSTRAINT document_references_document_id_foreign FOREIGN KEY (document_id)
// REFERENCES documents (id) MATCH SIMPLE
// ON UPDATE CASCADE
// ON DELETE CASCADE,
// CONSTRAINT document_references_relation_check CHECK (relation::text = ANY (ARRAY['IsSupplementTo'::character varying::text, 'IsSupplementedBy'::character varying::text, 'IsContinuedBy'::character varying::text, 'Continues'::character varying::text, 'IsNewVersionOf'::character varying::text, 'IsPartOf'::character varying::text, 'HasPart'::character varying::text, 'Compiles'::character varying::text, 'IsVariantFormOf'::character varying::text])),
// CONSTRAINT document_references_type_check CHECK (type::text = ANY (ARRAY['DOI'::character varying::text, 'Handle'::character varying::text, 'ISBN'::character varying::text, 'ISSN'::character varying::text, 'URL'::character varying::text, 'URN'::character varying::text]))
// )

View File

@ -0,0 +1,45 @@
import BaseSchema from '@ioc:Adonis/Lucid/Schema';
import { IdentifierTypes } from 'Contracts/enums';
export default class DocumentIdentifiers extends BaseSchema {
protected tableName = 'document_identifiers';
public async up() {
this.schema.createTable(this.tableName, (table) => {
table.increments('id').primary().defaultTo("nextval('document_identifiers_id_seq')")
table.integer('document_id').unsigned().notNullable();
table
.foreign('document_id', 'document_identifiers_document_id_foreign')
.references('id')
.inTable('documents')
.onDelete('CASCADE') // delete this identifier when document is deleted
.onUpdate('CASCADE');
// table.string('type').notNullable();
table.enum('type', Object.keys(IdentifierTypes)).notNullable();
table.string('value').notNullable();
table.timestamp('created_at', { useTz: false }).nullable();
table.timestamp('updated_at', { useTz: false }).nullable();
});
}
public async down() {
this.schema.dropTable(this.tableName);
}
}
// -- Table: document_identifiers
// CREATE TABLE IF NOT EXISTS document_identifiers
// (
// id integer NOT NULL DEFAULT nextval('document_identifiers_id_seq'::regclass),
// document_id integer NOT NULL,
// type character varying(255) NOT NULL,
// value character varying(255) NOT NULL,
// created_at timestamp(0) without time zone,
// updated_at timestamp(0) without time zone,
// CONSTRAINT document_identifiers_pkey PRIMARY KEY (id),
// CONSTRAINT document_identifiers_document_id_foreign FOREIGN KEY (document_id)
// REFERENCES documents (id) MATCH SIMPLE
// ON UPDATE CASCADE
// ON DELETE CASCADE,
// CONSTRAINT document_identifiers_type_check CHECK (type::text = ANY (ARRAY['doi'::character varying::text, 'handle'::character varying::text, 'isbn'::character varying::text, 'issn'::character varying::text, 'url'::character varying::text, 'urn'::character varying::text]))
// )

148
package-lock.json generated
View File

@ -784,21 +784,21 @@
} }
}, },
"node_modules/@babel/core": { "node_modules/@babel/core": {
"version": "7.22.15", "version": "7.22.17",
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.15.tgz", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.17.tgz",
"integrity": "sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==", "integrity": "sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.22.13", "@babel/code-frame": "^7.22.13",
"@babel/generator": "^7.22.15", "@babel/generator": "^7.22.15",
"@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-compilation-targets": "^7.22.15",
"@babel/helper-module-transforms": "^7.22.15", "@babel/helper-module-transforms": "^7.22.17",
"@babel/helpers": "^7.22.15", "@babel/helpers": "^7.22.15",
"@babel/parser": "^7.22.15", "@babel/parser": "^7.22.16",
"@babel/template": "^7.22.15", "@babel/template": "^7.22.15",
"@babel/traverse": "^7.22.15", "@babel/traverse": "^7.22.17",
"@babel/types": "^7.22.15", "@babel/types": "^7.22.17",
"convert-source-map": "^1.7.0", "convert-source-map": "^1.7.0",
"debug": "^4.1.0", "debug": "^4.1.0",
"gensync": "^1.0.0-beta.2", "gensync": "^1.0.0-beta.2",
@ -1019,9 +1019,9 @@
} }
}, },
"node_modules/@babel/helper-module-transforms": { "node_modules/@babel/helper-module-transforms": {
"version": "7.22.15", "version": "7.22.17",
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.15.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz",
"integrity": "sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==", "integrity": "sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5",
@ -1059,14 +1059,14 @@
} }
}, },
"node_modules/@babel/helper-remap-async-to-generator": { "node_modules/@babel/helper-remap-async-to-generator": {
"version": "7.22.9", "version": "7.22.17",
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz",
"integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", "integrity": "sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-annotate-as-pure": "^7.22.5",
"@babel/helper-environment-visitor": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.5",
"@babel/helper-wrap-function": "^7.22.9" "@babel/helper-wrap-function": "^7.22.17"
}, },
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
@ -1156,14 +1156,14 @@
} }
}, },
"node_modules/@babel/helper-wrap-function": { "node_modules/@babel/helper-wrap-function": {
"version": "7.22.10", "version": "7.22.17",
"resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz",
"integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", "integrity": "sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-function-name": "^7.22.5", "@babel/helper-function-name": "^7.22.5",
"@babel/template": "^7.22.5", "@babel/template": "^7.22.15",
"@babel/types": "^7.22.10" "@babel/types": "^7.22.17"
}, },
"engines": { "engines": {
"node": ">=6.9.0" "node": ">=6.9.0"
@ -1198,9 +1198,9 @@
} }
}, },
"node_modules/@babel/parser": { "node_modules/@babel/parser": {
"version": "7.22.15", "version": "7.22.16",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.15.tgz", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz",
"integrity": "sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==", "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==",
"bin": { "bin": {
"parser": "bin/babel-parser.js" "parser": "bin/babel-parser.js"
}, },
@ -2556,9 +2556,9 @@
} }
}, },
"node_modules/@babel/traverse": { "node_modules/@babel/traverse": {
"version": "7.22.15", "version": "7.22.17",
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.15.tgz", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.17.tgz",
"integrity": "sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==", "integrity": "sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/code-frame": "^7.22.13", "@babel/code-frame": "^7.22.13",
@ -2567,8 +2567,8 @@
"@babel/helper-function-name": "^7.22.5", "@babel/helper-function-name": "^7.22.5",
"@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-hoist-variables": "^7.22.5",
"@babel/helper-split-export-declaration": "^7.22.6", "@babel/helper-split-export-declaration": "^7.22.6",
"@babel/parser": "^7.22.15", "@babel/parser": "^7.22.16",
"@babel/types": "^7.22.15", "@babel/types": "^7.22.17",
"debug": "^4.1.0", "debug": "^4.1.0",
"globals": "^11.1.0" "globals": "^11.1.0"
}, },
@ -2577,9 +2577,9 @@
} }
}, },
"node_modules/@babel/types": { "node_modules/@babel/types": {
"version": "7.22.15", "version": "7.22.17",
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.15.tgz", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.17.tgz",
"integrity": "sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==", "integrity": "sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@babel/helper-string-parser": "^7.22.5", "@babel/helper-string-parser": "^7.22.5",
@ -2751,9 +2751,9 @@
} }
}, },
"node_modules/@eslint/js": { "node_modules/@eslint/js": {
"version": "8.48.0", "version": "8.49.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.48.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz",
"integrity": "sha512-ZSjtmelB7IJfWD2Fvb7+Z+ChTIKWq6kjda95fLcQKNS5aheVHn4IkfgRQE3sIIzTcSLwLcLZUD9UBt+V7+h+Pw==", "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@ -2775,9 +2775,9 @@
} }
}, },
"node_modules/@fontsource/archivo-black": { "node_modules/@fontsource/archivo-black": {
"version": "5.0.11", "version": "5.0.12",
"resolved": "https://registry.npmjs.org/@fontsource/archivo-black/-/archivo-black-5.0.11.tgz", "resolved": "https://registry.npmjs.org/@fontsource/archivo-black/-/archivo-black-5.0.12.tgz",
"integrity": "sha512-J5Cs9kUZRJgP/uBbUHak/2mw0Oky2REk7TYTnjzySSkSqvxsjDQlH8oLJM/mpU5OJ39pukzae16U6/qzWBPiMw==" "integrity": "sha512-zHsdUkz1ax+OEGAJadV5Jglzd7qhCZevOGjWPeuYo8Oh1JhHwKPocPXYU32rVBRWu1rRuvHNYg82+1tYJYZXbA=="
}, },
"node_modules/@fontsource/inter": { "node_modules/@fontsource/inter": {
"version": "5.0.8", "version": "5.0.8",
@ -4003,9 +4003,9 @@
} }
}, },
"node_modules/@types/lodash": { "node_modules/@types/lodash": {
"version": "4.14.197", "version": "4.14.198",
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.197.tgz", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.198.tgz",
"integrity": "sha512-BMVOiWs0uNxHVlHBgzTIqJYmj+PgCo4euloGF+5m4okL3rEYzM2EEv78mw8zWSMM57dM7kVIgJ2QDvwHSoCI5g==", "integrity": "sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg==",
"dev": true "dev": true
}, },
"node_modules/@types/lodash-es": { "node_modules/@types/lodash-es": {
@ -4040,9 +4040,9 @@
"dev": true "dev": true
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "20.5.9", "version": "20.6.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.9.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.0.tgz",
"integrity": "sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==" "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg=="
}, },
"node_modules/@types/pino": { "node_modules/@types/pino": {
"version": "6.3.12", "version": "6.3.12",
@ -6082,9 +6082,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001527", "version": "1.0.30001532",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001527.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001532.tgz",
"integrity": "sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==", "integrity": "sha512-FbDFnNat3nMnrROzqrsg314zhqN5LGQ1kyyMk2opcrwGbVGpHRhgCWtAgD5YJUqNAiQ+dklreil/c3Qf1dfCTw==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -6733,9 +6733,9 @@
} }
}, },
"node_modules/core-js-compat": { "node_modules/core-js-compat": {
"version": "3.32.1", "version": "3.32.2",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.2.tgz",
"integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"browserslist": "^4.21.10" "browserslist": "^4.21.10"
@ -6752,9 +6752,9 @@
"dev": true "dev": true
}, },
"node_modules/cosmiconfig": { "node_modules/cosmiconfig": {
"version": "8.3.4", "version": "8.3.5",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.4.tgz", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.5.tgz",
"integrity": "sha512-SF+2P8+o/PTV05rgsAjDzL4OFdVXAulSfC/L19VaeVT7+tpOOSscCt2QLxDZ+CLxF2WOiq6y1K5asvs8qUJT/Q==", "integrity": "sha512-A5Xry3xfS96wy2qbiLkQLAg4JUrR2wvfybxj6yqLmrUfMAvhS3MZxIP2oQn0grgYIvJqzpeTEWu4vK0t+12NNw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"import-fresh": "^3.3.0", "import-fresh": "^3.3.0",
@ -7967,9 +7967,9 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.4.508", "version": "1.4.513",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.508.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.513.tgz",
"integrity": "sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==", "integrity": "sha512-cOB0xcInjm+E5qIssHeXJ29BaUyWpMyFKT5RB3bsLENDheCja0wMkHJyiPl0NBE/VzDI7JDuNEQWhe6RitEUcw==",
"dev": true "dev": true
}, },
"node_modules/emittery": { "node_modules/emittery": {
@ -8118,16 +8118,16 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.48.0", "version": "8.49.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.48.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz",
"integrity": "sha512-sb6DLeIuRXxeM1YljSe1KEx9/YYeZFQWcV8Rq9HfigmdDEugjLEVEa1ozDjL6YDjBpQHPJxJzze+alxi4T3OLg==", "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1", "@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.2", "@eslint/eslintrc": "^2.1.2",
"@eslint/js": "8.48.0", "@eslint/js": "8.49.0",
"@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/config-array": "^0.11.11",
"@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8", "@nodelib/fs.walk": "^1.2.8",
"ajv": "^6.12.4", "ajv": "^6.12.4",
@ -10913,9 +10913,9 @@
} }
}, },
"node_modules/jiti": { "node_modules/jiti": {
"version": "1.19.3", "version": "1.20.0",
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.3.tgz", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz",
"integrity": "sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==", "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==",
"dev": true, "dev": true,
"bin": { "bin": {
"jiti": "bin/jiti.js" "jiti": "bin/jiti.js"
@ -11346,9 +11346,9 @@
} }
}, },
"node_modules/luxon": { "node_modules/luxon": {
"version": "3.4.2", "version": "3.4.3",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.2.tgz", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.3.tgz",
"integrity": "sha512-uBoAVCVcajsrqy3pv7eo5jEUz1oeLmCcnMv8n4AJpT5hbpN9lUssAXibNElpbLce3Mhm9dyBzwYLs9zctM/0tA==", "integrity": "sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg==",
"engines": { "engines": {
"node": ">=12" "node": ">=12"
} }
@ -17264,9 +17264,9 @@
} }
}, },
"node_modules/webpack/node_modules/es-module-lexer": { "node_modules/webpack/node_modules/es-module-lexer": {
"version": "1.3.0", "version": "1.3.1",
"resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz",
"integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==",
"dev": true, "dev": true,
"peer": true "peer": true
}, },
@ -17413,9 +17413,9 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
}, },
"node_modules/ws": { "node_modules/ws": {
"version": "8.13.0", "version": "8.14.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.1.tgz",
"integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
@ -17514,9 +17514,9 @@
} }
}, },
"node_modules/youch": { "node_modules/youch": {
"version": "3.2.3", "version": "3.3.1",
"resolved": "https://registry.npmjs.org/youch/-/youch-3.2.3.tgz", "resolved": "https://registry.npmjs.org/youch/-/youch-3.3.1.tgz",
"integrity": "sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==", "integrity": "sha512-Rg9ioi+AkKyje2Hk4qILSVvayaFW98KTsOJ4aIkjDf97LZX5WJVIHZmFLnM4ThcVofHo/fbbwtYajfBPHFOVtg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"cookie": "^0.5.0", "cookie": "^0.5.0",

31
readme.md Normal file
View File

@ -0,0 +1,31 @@
# Tethys Research Repository Backend System
Welcome to the Tethys Research Repository Backend System! This is the backend component responsible for managing datasets, users, and the core functionality of the Tethys Data Research Repository.
## Table of Contents
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Usage](#usage)
- [Configuration](#configuration)
- [Database](#database)
- [API Documentation](#api-documentation)
- [Contributing](#contributing)
- [License](#license)
## Getting Started
### Prerequisites
Before you begin, ensure you have met the following requirements:
- Node.js and npm installed on your development machine.
- A running PostgreSQL database instance.
- AdonisJS CLI globally installed.
### Installation
1. Clone this repository:
```bash
git clone https://gitea.geologie.ac.at/geolba/tethys.backend.git