Browse Source

Merge pull request #2450 from nocodb/fix/mssql-non-dbo

fix: mssql projects with non dbo schema
pull/2476/head
Pranav C 2 years ago committed by GitHub
parent
commit
ac256b77b1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 13
      packages/nc-gui/components/CreateOrEditProject.vue
  2. 14
      packages/nocodb/package-lock.json
  3. 2
      packages/nocodb/package.json
  4. 20
      packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts

13
packages/nc-gui/components/CreateOrEditProject.vue

@ -453,14 +453,14 @@
" "
/> />
</v-col> </v-col>
<!-- todo : Schema name --> <!-- Schema name -->
<v-col <v-col
v-if="db.client === 'mssql' || db.client === 'pg'" v-if="db.client === 'mssql' || db.client === 'pg'"
cols="4" cols="4"
class="py-0" class="py-0"
> >
<v-text-field <v-text-field
v-model="schema" v-model="db.searchPath[0]"
:disabled="edit && enableDbEdit < 2" :disabled="edit && enableDbEdit < 2"
class="body-2 database-field" class="body-2 database-field"
:rules="form.requiredRule" :rules="form.requiredRule"
@ -891,7 +891,6 @@ export default {
layout: 'empty', layout: 'empty',
data() { data() {
return { return {
schema: 'public',
testSuccess: false, testSuccess: false,
projectCreated: false, projectCreated: false,
allSchemas: false, allSchemas: false,
@ -1542,9 +1541,7 @@ export default {
this.projectReloading = true this.projectReloading = true
const con = projectJson.envs._noco.db[0] const con = projectJson.envs._noco.db[0]
if (con.client === 'pg' || con.client === 'mssql') { if (con.client !== 'pg' && con.client !== 'mssql' && 'searchPath' in con) {
con.searchPath = [this.schema]
} else if ('searchPath' in con) {
delete con.searchPath delete con.searchPath
} }
@ -1895,9 +1892,9 @@ export default {
}, },
onDatabaseTypeChanged(client, db1, index, env) { onDatabaseTypeChanged(client, db1, index, env) {
if (this.databaseNames[client] === 'mssql') { if (this.databaseNames[client] === 'mssql') {
this.schema = 'dbo' this.project.envs[env].db[index].searchPath[0] = 'dbo'
} else if (this.databaseNames[client] === 'pg') { } else if (this.databaseNames[client] === 'pg') {
this.schema = 'public' this.project.envs[env].db[index].searchPath[0] = 'public'
} }
for (const env in this.project.envs) { for (const env in this.project.envs) {

14
packages/nocodb/package-lock.json generated

@ -70,7 +70,7 @@
"mysql2": "^2.2.5", "mysql2": "^2.2.5",
"nanoid": "^3.1.20", "nanoid": "^3.1.20",
"nc-common": "0.0.6", "nc-common": "0.0.6",
"nc-help": "0.2.65", "nc-help": "0.2.66",
"nc-lib-gui": "0.91.10", "nc-lib-gui": "0.91.10",
"nc-plugin": "0.1.2", "nc-plugin": "0.1.2",
"ncp": "^2.0.0", "ncp": "^2.0.0",
@ -16352,9 +16352,9 @@
} }
}, },
"node_modules/nc-help": { "node_modules/nc-help": {
"version": "0.2.65", "version": "0.2.66",
"resolved": "https://registry.npmjs.org/nc-help/-/nc-help-0.2.65.tgz", "resolved": "https://registry.npmjs.org/nc-help/-/nc-help-0.2.66.tgz",
"integrity": "sha512-Sia+ZhfrCCFu70khjVCUMJ7B8xYlSyfatKt7WERDzqiykC7rOGFxfyhKPfhDzep+X1CDT3R+psd4lTi4d52wdg==", "integrity": "sha512-yYoaUGJNcdvk9J/ORYyBV7CCgMJ9onBYasfvE1qSHq9HMKY8pJGiV5Hxui232XU1rDkuzZ9t55StcSKj76qtLg==",
"dependencies": { "dependencies": {
"@rudderstack/rudder-sdk-node": "^1.1.3", "@rudderstack/rudder-sdk-node": "^1.1.3",
"axios": "^0.21.1", "axios": "^0.21.1",
@ -38040,9 +38040,9 @@
"integrity": "sha512-3AryS9uwa5NfISLxMciUonrH7YfXp+nlahB9T7girXIsLQrmwX4MdnuKs32akduCOGpKmjTJSWmATULbuMkbfw==" "integrity": "sha512-3AryS9uwa5NfISLxMciUonrH7YfXp+nlahB9T7girXIsLQrmwX4MdnuKs32akduCOGpKmjTJSWmATULbuMkbfw=="
}, },
"nc-help": { "nc-help": {
"version": "0.2.65", "version": "0.2.66",
"resolved": "https://registry.npmjs.org/nc-help/-/nc-help-0.2.65.tgz", "resolved": "https://registry.npmjs.org/nc-help/-/nc-help-0.2.66.tgz",
"integrity": "sha512-Sia+ZhfrCCFu70khjVCUMJ7B8xYlSyfatKt7WERDzqiykC7rOGFxfyhKPfhDzep+X1CDT3R+psd4lTi4d52wdg==", "integrity": "sha512-yYoaUGJNcdvk9J/ORYyBV7CCgMJ9onBYasfvE1qSHq9HMKY8pJGiV5Hxui232XU1rDkuzZ9t55StcSKj76qtLg==",
"requires": { "requires": {
"@rudderstack/rudder-sdk-node": "^1.1.3", "@rudderstack/rudder-sdk-node": "^1.1.3",
"axios": "^0.21.1", "axios": "^0.21.1",

2
packages/nocodb/package.json

@ -154,7 +154,7 @@
"mysql2": "^2.2.5", "mysql2": "^2.2.5",
"nanoid": "^3.1.20", "nanoid": "^3.1.20",
"nc-common": "0.0.6", "nc-common": "0.0.6",
"nc-help": "0.2.65", "nc-help": "0.2.66",
"nc-lib-gui": "0.91.10", "nc-lib-gui": "0.91.10",
"nc-plugin": "0.1.2", "nc-plugin": "0.1.2",
"ncp": "^2.0.0", "ncp": "^2.0.0",

20
packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/BaseModelSqlv2.ts

@ -90,7 +90,7 @@ class BaseModelSqlv2 {
} }
public async readByPk(id?: any): Promise<any> { public async readByPk(id?: any): Promise<any> {
const qb = this.dbDriver(this.model.table_name); const qb = this.dbDriver(this.tnPath);
await this.selectObject({ qb }); await this.selectObject({ qb });
@ -106,7 +106,7 @@ class BaseModelSqlv2 {
} }
public async exist(id?: any): Promise<any> { public async exist(id?: any): Promise<any> {
const qb = this.dbDriver(this.model.table_name); const qb = this.dbDriver(this.tnPath);
await this.selectObject({ qb }); await this.selectObject({ qb });
const pks = this.model.primaryKeys; const pks = this.model.primaryKeys;
if ((id + '').split('___').length != pks.length) { if ((id + '').split('___').length != pks.length) {
@ -122,7 +122,7 @@ class BaseModelSqlv2 {
sort?: string | string[]; sort?: string | string[];
} = {} } = {}
): Promise<any> { ): Promise<any> {
const qb = this.dbDriver(this.model.table_name); const qb = this.dbDriver(this.tnPath);
await this.selectObject({ qb }); await this.selectObject({ qb });
const aliasColObjMap = await this.model.getAliasColObjMap(); const aliasColObjMap = await this.model.getAliasColObjMap();
@ -175,15 +175,12 @@ class BaseModelSqlv2 {
): Promise<any> { ): Promise<any> {
const { where, ...rest } = this._getListArgs(args as any); const { where, ...rest } = this._getListArgs(args as any);
const qb = this.dbDriver(this.model.table_name); const qb = this.dbDriver(this.tnPath);
await this.selectObject({ qb }); await this.selectObject({ qb });
const aliasColObjMap = await this.model.getAliasColObjMap(); const aliasColObjMap = await this.model.getAliasColObjMap();
let sorts = extractSortsObject(args?.sort, aliasColObjMap); let sorts = extractSortsObject(args?.sort, aliasColObjMap);
const filterObj = extractFilterFromXwhere(args?.where, aliasColObjMap); const filterObj = extractFilterFromXwhere(args?.where, aliasColObjMap);
// todo: replace with view id // todo: replace with view id
if (!ignoreFilterSort && this.viewId) { if (!ignoreFilterSort && this.viewId) {
await conditionV2( await conditionV2(
@ -249,7 +246,6 @@ class BaseModelSqlv2 {
if (!ignoreFilterSort) applyPaginate(qb, rest); if (!ignoreFilterSort) applyPaginate(qb, rest);
const proto = await this.getProto(); const proto = await this.getProto();
const data = await this.extractRawQueryAndExec(qb); const data = await this.extractRawQueryAndExec(qb);
return data?.map(d => { return data?.map(d => {
@ -265,7 +261,7 @@ class BaseModelSqlv2 {
await this.model.getColumns(); await this.model.getColumns();
const { where } = this._getListArgs(args); const { where } = this._getListArgs(args);
const qb = this.dbDriver(this.model.table_name); const qb = this.dbDriver(this.tnPath);
// qb.xwhere(where, await this.model.getAliasColMapping()); // qb.xwhere(where, await this.model.getAliasColMapping());
const aliasColObjMap = await this.model.getAliasColObjMap(); const aliasColObjMap = await this.model.getAliasColObjMap();
@ -334,7 +330,7 @@ class BaseModelSqlv2 {
) { ) {
const { where, ...rest } = this._getListArgs(args as any); const { where, ...rest } = this._getListArgs(args as any);
const qb = this.dbDriver(this.model.table_name); const qb = this.dbDriver(this.tnPath);
qb.count(`${this.model.primaryKey?.column_name || '*'} as count`); qb.count(`${this.model.primaryKey?.column_name || '*'} as count`);
qb.select(args.column_name); qb.select(args.column_name);
@ -1618,7 +1614,7 @@ class BaseModelSqlv2 {
} else { } else {
await this.model.getColumns(); await this.model.getColumns();
const { where } = this._getListArgs(args); const { where } = this._getListArgs(args);
const qb = this.dbDriver(this.model.table_name); const qb = this.dbDriver(this.tnPath);
const aliasColObjMap = await this.model.getAliasColObjMap(); const aliasColObjMap = await this.model.getAliasColObjMap();
const filterObj = extractFilterFromXwhere(where, aliasColObjMap); const filterObj = extractFilterFromXwhere(where, aliasColObjMap);
@ -1680,7 +1676,7 @@ class BaseModelSqlv2 {
try { try {
await this.model.getColumns(); await this.model.getColumns();
const { where } = this._getListArgs(args); const { where } = this._getListArgs(args);
const qb = this.dbDriver(this.model.table_name); const qb = this.dbDriver(this.tnPath);
const aliasColObjMap = await this.model.getAliasColObjMap(); const aliasColObjMap = await this.model.getAliasColObjMap();
const filterObj = extractFilterFromXwhere(where, aliasColObjMap); const filterObj = extractFilterFromXwhere(where, aliasColObjMap);

Loading…
Cancel
Save