Browse Source

Merge branch 'master' of https://github.com/nocodb/nocodb into feat/i18n

pull/271/head
Wing-Kam Wong 3 years ago
parent
commit
6303fdb5c5
  1. 8
      docker-compose/mssql/docker-compose.yml
  2. 12
      docker-compose/mysql/docker-compose.yml
  3. 10
      docker-compose/pg/docker-compose.yml
  4. 1
      packages/nc-gui/components/project/spreadsheet/apis/gqlApi.js
  5. 4
      packages/nc-gui/components/project/spreadsheet/apis/restApi.js
  6. 2
      packages/nc-lib-gui/package.json
  7. 6
      packages/nocodb/package-lock.json
  8. 8
      packages/nocodb/package.json
  9. 33
      packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts
  10. 3
      packages/nocodb/src/lib/noco/plugins/adapters/storage/Local.ts

8
docker-compose/mssql/docker-compose.yml

@ -1,7 +1,7 @@
version: '3.3'
services:
xcdb:
root_db:
image: mcr.microsoft.com/mssql/server:2017-latest
restart: always
volumes:
@ -16,9 +16,9 @@ services:
retries: 10
start_period: 10s
xc:
nocodb:
depends_on:
xcdb:
root_db:
condition: service_healthy
image: nocodb/nocodb:latest
ports:
@ -28,6 +28,6 @@ services:
- "8083:8083"
restart: always
environment:
NC_DB: "mssql://xcdb:1433?u=sa&p=Password123.&d=xcdb"
NC_DB: "mssql://root_db:1433?u=sa&p=Password123.&d=root_db"
volumes:
db_data: {}

12
docker-compose/mysql/docker-compose.yml

@ -1,24 +1,24 @@
version: '3.3'
services:
xcdb:
root_db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: xcdb
MYSQL_USER: xc
MYSQL_DATABASE: root_db
MYSQL_USER: noco
MYSQL_PASSWORD: password
healthcheck:
test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
timeout: 20s
retries: 10
xc:
nocodb:
depends_on:
xcdb:
root_db:
condition: service_healthy
image: nocodb/nocodb:latest
ports:
@ -28,6 +28,6 @@ services:
- "8083:8083"
restart: always
environment:
NC_DB: "mysql2://xcdb:3306?u=xc&p=password&d=xcdb"
NC_DB: "mysql2://root_db:3306?u=noco&p=password&d=root_db"
volumes:
db_data: {}

10
docker-compose/pg/docker-compose.yml

@ -1,7 +1,7 @@
version: '3.3'
services:
xcdb:
root_db:
image: postgres
restart: always
volumes:
@ -9,15 +9,15 @@ services:
environment:
POSTGRES_PASSWORD: password
POSTGRES_USER: postgres
POSTGRES_DB: xcdb
POSTGRES_DB: root_db
healthcheck:
test: pg_isready -U "$$POSTGRES_USER" -d "$$POSTGRES_DB"
interval: 10s
timeout: 2s
retries: 10
xc:
nocodb:
depends_on:
xcdb:
root_db:
condition: service_healthy
image: nocodb/nocodb:latest
ports:
@ -27,6 +27,6 @@ services:
- "8083:8083"
restart: always
environment:
NC_DB: "pg://xcdb:5432?u=postgres&p=password&d=xcdb"
NC_DB: "pg://root_db:5432?u=postgres&p=password&d=root_db"
volumes:
db_data: {}

1
packages/nc-gui/components/project/spreadsheet/apis/gqlApi.js

@ -32,7 +32,6 @@ export default class GqlApi {
url,
method: 'post',
data: params,
baseURL: process.env.NODE_ENV === 'production' ? '/' : 'http://localhost:8080/'
})
}

4
packages/nc-gui/components/project/spreadsheet/apis/restApi.js

@ -28,7 +28,6 @@ export default class RestApi {
return this.$axios({
url,
params,
baseURL: process.env.NODE_ENV === 'production' ? '/' : 'http://localhost:8080/'
})
}
@ -45,7 +44,6 @@ export default class RestApi {
method: 'put',
url: `/nc/${this.$ctx.$route.params.project_id}/api/v1/${this.table}/${id}`,
data,
baseURL: process.env.NODE_ENV === 'production' ? '/' : 'http://localhost:8080/'
});
const colName = Object.keys(data)[0];
this.$ctx.$store.dispatch('sqlMgr/ActSqlOp', [{dbAlias: this.$ctx.nodes.dbAlias}, 'xcAuditCreate', {
@ -64,7 +62,6 @@ export default class RestApi {
method: 'post',
url: `/nc/${this.$ctx.$route.params.project_id}/api/v1/${this.table}`,
data,
baseURL: process.env.NODE_ENV === 'production' ? '/' : 'http://localhost:8080/'
})).data;
}
@ -72,7 +69,6 @@ export default class RestApi {
return this.$axios({
method: 'delete',
url: `/nc/${this.$ctx.$route.params.project_id}/api/v1/${this.table}/${id}`,
baseURL: process.env.NODE_ENV === 'production' ? '/' : 'http://localhost:8080/'
})
}

2
packages/nc-lib-gui/package.json

@ -1,6 +1,6 @@
{
"name": "nc-lib-gui",
"version": "0.1.222",
"version": "0.1.224",
"description": "> TODO: description",
"author": "“pranavxc” <pranavxc@gmail.com>",
"homepage": "https://gitlab.com/xgenecloud-ts/xgenecloud-ts#readme",

6
packages/nocodb/package-lock.json generated

@ -11203,9 +11203,9 @@
}
},
"nc-lib-gui": {
"version": "0.1.218",
"resolved": "https://registry.npmjs.org/nc-lib-gui/-/nc-lib-gui-0.1.218.tgz",
"integrity": "sha512-p3twcw4gRWWzqSwAktdGFT2xd+1JAzAPCDaiDS0/rGcQ1PPOWEEyigK4/aXB8rPs062fzknoBEFofLWb/t9DlQ==",
"version": "0.1.224",
"resolved": "https://registry.npmjs.org/nc-lib-gui/-/nc-lib-gui-0.1.224.tgz",
"integrity": "sha512-PmBFTkZ+wu1Ib2pm+7WSGMuXlJaNe610Td+G5vODCheLrmKWuHVIWDGKnTl4Si4yjjXrzs8bGxmZhAcipHbsPA==",
"requires": {
"axios": "^0.19.2",
"body-parser": "^1.19.0",

8
packages/nocodb/package.json

@ -1,6 +1,6 @@
{
"name": "nocodb",
"version": "0.9.29",
"version": "0.9.30",
"description": "xc-cli",
"main": "dist/bundle.js",
"repository": "https://github.com/nocodb/nocodb",
@ -54,9 +54,9 @@
"postbuild": "npm run copy-files",
"copy-files": "copyfiles -u 1 \"src/**/*.ejs\" build/main && copyfiles -u 1 \"src/**/*.ejs\" build/module && copyfiles -u 1 \"src/**/*.ejs\" docker",
"docker:build": "EE=\"true-xc-test\" webpack --config docker/webpack.config.js",
"docker:image:build": "docker build . -t nocodb/nocodb:latest -t nocodb/nocodb:0.9.29 --no-cache",
"docker:image:build": "docker build . -t nocodb/nocodb:latest -t nocodb/nocodb:0.9.30 --no-cache",
"docker:image:buildx": "docker buildx build . --platform linux/arm64 -t nocodb/nocodb:arm64 --no-cache",
"docker:image:deploy": "docker push nocodb/nocodb:latest && docker push nocodb/nocodb:0.9.29",
"docker:image:deploy": "docker push nocodb/nocodb:latest && docker push nocodb/nocodb:0.9.30",
"docker:build:publish:image": "npm run build && npm run docker:build && npm run docker:image:build && npm run docker:image:deploy",
"docker:s3:image:build": "docker build . --file litestream/Dockerfile -t xgenecloud/xc-s3:latest -t xgenecloud/xc-s3:0.0.1 --no-cache",
"docker:s3:image:deploy": "docker push xgenecloud/xc-s3:latest && docker push xgenecloud/xc-s3:0.0.1",
@ -143,7 +143,7 @@
"nanoid": "^3.1.20",
"nc-common": "0.0.6",
"nc-help": "^0.1.110",
"nc-lib-gui": "^0.1.218",
"nc-lib-gui": "^0.1.224",
"nc-plugin": "^0.1.1",
"nodemailer": "^6.4.10",
"ora": "^4.0.4",

33
packages/nocodb/src/lib/noco/meta/NcMetaMgr.ts

@ -10,9 +10,6 @@ import archiver from 'archiver';
import multer from 'multer';
import NcMetaIO, {META_TABLES} from "./NcMetaIO";
import {
// ExpressXcTsRoutesHm,
// ExpressXcTsRoutes,
// ExpressXcTsRoutesBt,
SqlClientFactory, Tele
} from 'nc-help'
import NcHelp from "../../utils/NcHelp";
@ -24,13 +21,15 @@ import ProjectMgr from '../../sqlMgr/ProjectMgr';
import {nanoid} from 'nanoid';
import mimetypes, {mimeIcons} from "../../utils/mimeTypes";
import IStorageAdapter from "../../../interface/IStorageAdapter";
// import StorageFactory from "../plugins/adapters/storage/StorageFactory";
import IEmailAdapter from "../../../interface/IEmailAdapter";
import EmailFactory from "../plugins/adapters/email/EmailFactory";
import Twilio from "../plugins/adapters/twilio/Twilio";
import {NcConfigFactory} from "../../index";
import XcCache from "../plugins/adapters/cache/XcCache";
import axios from 'axios';
import isDocker from 'is-docker';
import slash from 'slash';
import RestAuthCtrl from "../rest/RestAuthCtrlEE";
@ -38,10 +37,6 @@ import ExpressXcTsRoutesHm from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoute
import ExpressXcTsRoutesBt from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoutesBt";
import ExpressXcTsRoutes from "../../sqlMgr/code/routes/xc-ts/ExpressXcTsRoutes";
import NcPluginMgr from "../plugins/NcPluginMgr";
import isDocker from 'is-docker';
// import packageInfo from '../../../../package.json'
// require('pkginfo')(module, 'version');
const XC_PLUGIN_DET = 'XC_PLUGIN_DET';
@ -56,8 +51,6 @@ export default class NcMetaMgr {
public readonly pluginMgr: NcPluginMgr;
// public storageAdapter: IStorageAdapter;
// public emailAdapter: IEmailAdapter;
public twilioInstance: Twilio;
protected app: Noco;
@ -103,7 +96,7 @@ export default class NcMetaMgr {
router.get('/dl/:projectId/:dbAlias/:fileName', async (req, res) => {
try {
const type = mimetypes[path.extname(req.params.fileName).slice(1)] || 'text/plain';
const img = await this.storageAdapter.fileRead(path.join('nc', req.params.projectId, req.params.dbAlias, 'uploads', req.params.fileName));
const img = await this.storageAdapter.fileRead(slash(path.join('nc', req.params.projectId, req.params.dbAlias, 'uploads', req.params.fileName)));
res.writeHead(200, {'Content-Type': type});
res.end(img, 'binary');
} catch (e) {
@ -925,7 +918,7 @@ export default class NcMetaMgr {
const fileName = `${nanoid(6)}${path.extname(file.originalname)}`
const destPath = path.join('nc', this.getProjectId(args), this.getDbAlias(args), 'uploads');
await this.storageAdapter.fileCreate(path.join(destPath, fileName), file);
await this.storageAdapter.fileCreate(slash(path.join(destPath, fileName)), file);
return {
url: `${req.ncSiteUrl}/dl/${this.getProjectId(args)}/${this.getDbAlias(args)}/${fileName}`,
@ -949,7 +942,7 @@ export default class NcMetaMgr {
} else {
destPath = path.join('nc', this.getProjectId(args), this.getDbAlias(args), 'uploads');
}
let url = await this.storageAdapter.fileCreate(path.join(destPath, fileName), file);
let url = await this.storageAdapter.fileCreate(slash(path.join(destPath, fileName)), file);
if (!url) {
if (args?.args?.public) {
url = `${req.ncSiteUrl}/dl/public/files/${fileName}`;
@ -3114,12 +3107,14 @@ export default class NcMetaMgr {
const config = this.projectConfigs[this.getProjectId(args)];
return {
node: process.version,
arch: process.arch,
platform: process.platform,
docker: isDocker(),
database: config.envs?.[process.env.NODE_ENV || 'dev']?.db?.[0]?.client,
packageVersion: packageInfo?.version
Node: process.version,
Arch: process.arch,
Platform: process.platform,
Docker: isDocker(),
Database: config.envs?.[process.env.NODE_ENV || 'dev']?.db?.[0]?.client,
'ProjectOnRootDB': !!config?.prefix,
'RootDB': this.config?.meta?.db?.client,
'PackageVersion': packageInfo?.version
}
}

3
packages/nocodb/src/lib/noco/plugins/adapters/storage/Local.ts

@ -8,7 +8,8 @@ export default class Local implements IStorageAdapter {
constructor() {
}
public async fileCreate(destPath: string, file: XcFile): Promise<any> {
public async fileCreate(key: string, file: XcFile): Promise<any> {
const destPath = path.join(...key.split('/'));
try {
mkdirp.sync(path.dirname(destPath));
await fs.promises.rename(file.path, destPath);

Loading…
Cancel
Save