Skip to content

Commit

Permalink
chore: cleanup code.
Browse files Browse the repository at this point in the history
  • Loading branch information
richardo2016 committed Dec 17, 2022
1 parent 18b3f07 commit 33f3a81
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 35 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
node_modules
test.db*
test*.db*
fibapp-test-sqlite-*
fibapp-test-sqlite
fibapp-test-sqlite*

cov-out
*.lcov
Expand Down
12 changes: 5 additions & 7 deletions demo/test/support/spec_helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const App = require('../../../').default;
const defs = require('../../defs');

const runtimeTime = Date.now();
function generateRandomConn () {
function generateConnectionInfo () {
const dbName = getStaticTestDBName();

const dbType = getTestDbType();
Expand Down Expand Up @@ -76,10 +76,7 @@ const getUseUUID = exports.getUseUUID = function () {
}

const getStaticTestDBName = exports.getStaticTestDBName = function () {
if (getTestDbType() === 'postgres') {
return `fibapp_test_psql`;
}
return `fibapp-test-${getTestDbType()}-${runtimeTime}`;
return `fibapp-test-${getTestDbType()}`;
}

const dbBuilder = exports.dbBuilder = function (dbName = '') {
Expand Down Expand Up @@ -109,7 +106,7 @@ const dbBuilder = exports.dbBuilder = function (dbName = '') {

var exists = driver.execute(`SELECT * FROM pg_database WHERE datname = '${dbName}'`);
if (!exists.length) {
driver.execute(`CREATE DATABASE ${dbName} WITH ENCODING = 'UTF8'`);
driver.execute(`CREATE DATABASE "${dbName}" WITH ENCODING = 'UTF8'`);
}
}
builder.drop = function () {
Expand Down Expand Up @@ -164,7 +161,7 @@ exports.getApp = function (conn = 'sqlite:test.db', ...args) {
* @param {import('../../../typings/Typo/app').FibApp.GetTestServerOptions} options
*/
const getRandomSqliteBasedApp = exports.getRandomSqliteBasedApp = function (...args) {
let {conn: connString, dbName, dbType = ''} = generateRandomConn();
let {conn: connString, dbName, dbType = ''} = generateConnectionInfo();

let connName = connString;
if (process.env.WEBX_TEST_DB_DEBUG) {
Expand All @@ -174,6 +171,7 @@ const getRandomSqliteBasedApp = exports.getRandomSqliteBasedApp = function (...a

const app = exports.getApp(connName, ...args)
const builder = dbBuilder(dbName)

return {
app,
dbName,
Expand Down
2 changes: 1 addition & 1 deletion src/http/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export function setup (app: FibApp.FibAppClass) {
}
} else {
linkers_after_host_save.push(() => {
o[assoc_info.association.setAccessor + 'Sync'].call(o, dkdata)
o[assoc_info.association.setSyncAccessor].call(o, dkdata)
})
}
}
Expand Down
38 changes: 25 additions & 13 deletions src/http/extend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,19 @@ import { checkout_obj_acl } from '../utils/checkout_acl';
import { filter, filter_ext } from '../utils/filter';
import { _get, _eget, _egetx } from '../utils/get';

import { check_hasmanyassoc_with_extraprops, extra_save, shouldSetSingle, getOneMergeIdFromAssocHasOne, getAccessorForPost, execLinkers, addHiddenLazyLinker__AfterSave, getValidDataFieldsFromModel, safeUpdateHasManyAssociatedInstanceWithExtra, buildCleanInstance, addHiddenLazyLinker__BeforeSave } from '../utils/orm-assoc';
import {
check_hasmanyassoc_with_extraprops,
extra_save,
shouldSetSingle,
getOneMergeIdFromAssocHasOne,
getSyncAccessorForPost,
execLinkers,
addHiddenLazyLinker__AfterSave,
getValidDataFieldsFromModel,
safeUpdateHasManyAssociatedInstanceWithExtra,
buildCleanInstance,
addHiddenLazyLinker__BeforeSave
} from '../utils/orm-assoc';
import { is_count_required, found_result_selector } from '../utils/query';
import { filterInstanceAsItsOwnShape, map_to_result } from '../utils/common';
import { addHiddenProperty } from '../utils/obj';
Expand Down Expand Up @@ -93,25 +105,25 @@ export function setup(app: FibApp.FibAppClass) {

ormUtils.attach_internal_api_requestinfo_to_instance(robj.inst, { data: null, req_info: req })

let _opt;
let _syncAccessor;
switch (rel_assoc_info.type) {
case 'hasOne':
_opt = Helpers.getOneAssociationItemFromInstanceByExtname(obj.inst, extend).setAccessor;
_syncAccessor = Helpers.getOneAssociationItemFromInstanceByExtname(obj.inst, extend).setSyncAccessor;
break
case 'hasMany':
_opt = Helpers.getManyAssociationItemFromInstanceByExtname(obj.inst, extend).addAccessor;
_syncAccessor = Helpers.getManyAssociationItemFromInstanceByExtname(obj.inst, extend).addSyncAccessor;
break
default:
break
}

if (!_opt)
if (!_syncAccessor)
return err_info(4040003, {
extend: extend,
classname: cls.model_name,
}, rel_assoc_info.association.model.cid);

obj.inst[_opt + 'Sync'].call(obj.inst, robj.inst);
obj.inst[_syncAccessor].call(obj.inst, robj.inst);

return {
success: {
Expand Down Expand Up @@ -218,7 +230,7 @@ export function setup(app: FibApp.FibAppClass) {
}
} else {
linkers_after_host_save.push(() => {
ro[assoc_info.association.setAccessor + 'Sync'].call(ro, dkdata)
ro[assoc_info.association.setSyncAccessor].call(ro, dkdata)
})
}
}
Expand Down Expand Up @@ -265,17 +277,17 @@ export function setup(app: FibApp.FibAppClass) {
const isMany = rel_assoc_info.type === 'hasMany'

const askorOptions = {
has_associated_instance_in_many: isMany && host[rel_assoc_info.association.hasAccessor + 'Sync'](ro)
has_associated_instance_in_many: isMany && host[rel_assoc_info.association.hasSyncAccessor](ro)
}
const linkAccessor = getAccessorForPost(rel_assoc_info, host, askorOptions)

if (isMany && ro.$extra) {
const assoc = rel_assoc_info.association as FxOrmAssociation.InstanceAssociationItem_HasMany;
safeUpdateHasManyAssociatedInstanceWithExtra(
assoc, host, ro, askorOptions.has_associated_instance_in_many
)
} else {
host[linkAccessor + 'Sync'](ro)
const linkSyncAccessor = getSyncAccessorForPost(rel_assoc_info, host, askorOptions)
host[linkSyncAccessor](ro)
}
}
}
Expand Down Expand Up @@ -370,7 +382,7 @@ export function setup(app: FibApp.FibAppClass) {
default:
throw new Error(`invalid rel_assoc_info.type ${rel_type}`)
case 'extendsTo':
robj.base[Helpers.getExtendsToAssociationItemFromInstanceByExtname(robj.base, extend).delAccessor + 'Sync'].call(robj.base);
robj.base[Helpers.getExtendsToAssociationItemFromInstanceByExtname(robj.base, extend).delSyncAccessor].call(robj.base);
break
case 'hasOne':
if (rel_assoc_info.association.reversed)
Expand All @@ -379,10 +391,10 @@ export function setup(app: FibApp.FibAppClass) {
classname: rel_assoc_info.association.model.model_name
}, rel_assoc_info.association.model.cid);

robj.base[Helpers.getOneAssociationItemFromInstanceByExtname(robj.base, extend).delAccessor + 'Sync'].call(robj.base);
robj.base[Helpers.getOneAssociationItemFromInstanceByExtname(robj.base, extend).delSyncAccessor].call(robj.base);
break
case 'hasMany':
robj.base[Helpers.getManyAssociationItemFromInstanceByExtname(robj.base, extend).delAccessor + 'Sync'].call(robj.base, robj.inst);
robj.base[Helpers.getManyAssociationItemFromInstanceByExtname(robj.base, extend).delSyncAccessor].call(robj.base, robj.inst);
break
}

Expand Down
13 changes: 9 additions & 4 deletions src/utils/get.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,14 @@ function wrap_error (err: FibApp.FibAppResponse) {
}
}

export const _egetx = function (cls: FxOrmModel.Model, id: FibApp.IdPayloadVar | FxOrmInstance.Instance, extend: FibAppACL.ACLExtendModelNameType, rid: FibApp.AppIdType, session: FibApp.FibAppSession, act: FibAppACL.ACLActString): {
export const _egetx = function (
cls: FxOrmModel.Model,
id: FibApp.IdPayloadVar | FxOrmInstance.Instance,
extend: FibAppACL.ACLExtendModelNameType,
rid: FibApp.AppIdType,
session: FibApp.FibAppSession,
act: FibAppACL.ACLActString
): {
riobj: FibApp.FibAppInternalCommExtendObj,
iobj: FibApp.FibAppInternalCommExtendObj
} {
Expand All @@ -81,9 +88,7 @@ export const _egetx = function (cls: FxOrmModel.Model, id: FibApp.IdPayloadVar |
id = (id as any).id;
} else {
iobj = {
inst: (cls as any).find().where({
id: id
}).firstSync()
inst: cls.find({ id: id }).firstSync()
};

if (iobj.inst === null)
Expand Down
16 changes: 8 additions & 8 deletions src/utils/orm-assoc.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { FxOrmInstance, FxOrmModel, FxOrmNS, FxOrmAssociation } from '@fxjs/orm';
import { Helpers, FxOrmInstance, FxOrmModel, FxOrmNS, FxOrmAssociation } from '@fxjs/orm';

import util = require('util')
import { FibApp } from '../Typo/app';
import { addHiddenProperty } from './obj';

export function check_hasmanyassoc_with_extraprops (instance: FxOrmInstance.Instance, extend_name: string): FxOrmNS.InstanceAssociationItem_HasMany | false {
var has_many_association = instance.__instRtd.many_associations.find(a => a.name === extend_name);
var has_extra_fields = has_many_association && has_many_association.props && util.isObject(has_many_association.props) && Object.keys(has_many_association.props).length
const has_many_association = Helpers.getManyAssociationItemFromInstanceByExtname(instance, extend_name);
const has_extra_fields = has_many_association && has_many_association.props && util.isObject(has_many_association.props) && Object.keys(has_many_association.props).length

return has_extra_fields ? has_many_association : false
}
Expand All @@ -28,15 +28,15 @@ export function extra_save (instance: FxOrmInstance.Instance, rinstance: FxOrmIn
instance[_many_assoc.addAccessor + 'Sync'](rinstance, extra)
}

export function getAccessorForPost (
export function getSyncAccessorForPost (
assoc_info: FxOrmModel.Model['associations'][any],
assoc_host_instance: FxOrmInstance.Instance,
opts: {
has_associated_instance_in_many?: boolean
}
) {
const assoc = assoc_info.association;
let setterName: string;
let setterName: string | undefined;

switch (assoc_info.type) {
case 'hasOne':
Expand All @@ -53,7 +53,7 @@ export function getAccessorForPost (

// when pass assoc_host_instance, check if setterName in it
if (assoc_host_instance && typeof assoc_host_instance[setterName] === 'function')
return setterName;
return `${setterName}Sync`;

return setterName;
}
Expand Down Expand Up @@ -163,8 +163,8 @@ export function safeUpdateHasManyAssociatedInstanceWithExtra (
delete associated_instance.$extra

if (has_associated_instance_in_many) {
host_instance[assoc.delAccessor + 'Sync'](associated_instance)
host_instance[assoc.delSyncAccessor](associated_instance)
}

host_instance[assoc.addAccessor + 'Sync'](associated_instance, extra)
host_instance[assoc.addSyncAccessor](associated_instance, extra)
}
2 changes: 1 addition & 1 deletion typings/utils/orm-assoc.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { FxOrmInstance, FxOrmModel, FxOrmNS, FxOrmAssociation } from '@fxjs/orm'
import { FibApp } from '../Typo/app';
export declare function check_hasmanyassoc_with_extraprops(instance: FxOrmInstance.Instance, extend_name: string): FxOrmNS.InstanceAssociationItem_HasMany | false;
export declare function extra_save(instance: FxOrmInstance.Instance, rinstance: FxOrmInstance.Instance, _many_assoc: FxOrmNS.InstanceAssociationItem_HasMany, extra: any, just_set?: boolean): void;
export declare function getAccessorForPost(assoc_info: FxOrmModel.Model['associations'][any], assoc_host_instance: FxOrmInstance.Instance, opts: {
export declare function getSyncAccessorForPost(assoc_info: FxOrmModel.Model['associations'][any], assoc_host_instance: FxOrmInstance.Instance, opts: {
has_associated_instance_in_many?: boolean;
}): string;
export declare function isSingleLink(type: string, association: FxOrmAssociation.InstanceAssociationItem): boolean;
Expand Down

0 comments on commit 33f3a81

Please sign in to comment.