@dbpath/dal
Advanced tools
Comparing version 0.2.4 to 0.2.6
export * from './src/dal'; | ||
export * from './src/dal.fixture'; | ||
export * from './src/prettyprint'; | ||
export * from './src/validator'; |
@@ -18,4 +18,3 @@ "use strict"; | ||
__exportStar(require("./src/dal"), exports); | ||
__exportStar(require("./src/dal.fixture"), exports); | ||
__exportStar(require("./src/prettyprint"), exports); | ||
__exportStar(require("./src/validator"), exports); |
@@ -23,5 +23,11 @@ import { NameAnd } from "@dbpath/utils"; | ||
} | ||
export interface TableMetaData { | ||
export interface NameAndType { | ||
name: string; | ||
type: string; | ||
} | ||
export interface HasPk { | ||
pk: NameAndType[]; | ||
} | ||
export interface TableMetaData extends HasPk { | ||
columns: NameAnd<ColumnMetaData>; | ||
pk: string[]; | ||
fk: NameAnd<ForeignKeyMetaData>; | ||
@@ -56,2 +62,3 @@ } | ||
} | ||
export declare function useDal<T>(dal: Dal, fn: (d: Dal) => T): T; | ||
export {}; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.useDal = void 0; | ||
function useDal(dal, fn) { | ||
try { | ||
return fn(dal); | ||
} | ||
finally { | ||
dal.close(); | ||
} | ||
} | ||
exports.useDal = useDal; |
import { Summary } from "@dbpath/config"; | ||
import { DatabaseMetaData } from "./dal"; | ||
import { ErrorsAnd } from "@dbpath/utils"; | ||
export interface TwoIds { | ||
fromId: string; | ||
toId: string; | ||
} | ||
export type ValidateTableNameFn = (tableName: string, fullTableName?: string) => string[]; | ||
import { TwoIds } from "@dbpath/types"; | ||
export type ValidateTableNameFn = (tableName: string) => string[]; | ||
export type ValidateFieldsFn = (tableName: string, fields: string[]) => string[]; | ||
@@ -19,4 +16,6 @@ export type ValidateLinkFn = (fromTableName: string, toTableName: string, idEquals: TwoIds[]) => string[]; | ||
useIdsOrSingleFkLinkOrError(fromTableName: string, toTableName: string, idEquals: TwoIds[]): TwoIds[]; | ||
actualTableName(tableName: string): string; | ||
} | ||
export declare const PathValidatorAlwaysOK: PathValidator; | ||
export declare function fullTableName(summary: Summary, tableName: string): string; | ||
export declare const validateTableName: (summary: Summary, m: DatabaseMetaData) => ValidateTableNameFn; | ||
@@ -23,0 +22,0 @@ export declare const validateFields: (summary: Summary, m: DatabaseMetaData) => ValidateFieldsFn; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.DalPathValidator = exports.validateLinks = exports.useIdsOrSingleFkLinkOrError = exports.getSingleFkLink = exports.validateFields = exports.validateTableName = exports.PathValidatorAlwaysOK = void 0; | ||
exports.DalPathValidator = exports.validateLinks = exports.useIdsOrSingleFkLinkOrError = exports.getSingleFkLink = exports.validateFields = exports.validateTableName = exports.fullTableName = exports.PathValidatorAlwaysOK = void 0; | ||
const utils_1 = require("@dbpath/utils"); | ||
@@ -11,3 +11,4 @@ exports.PathValidatorAlwaysOK = { | ||
return idEquals; | ||
} | ||
}, | ||
actualTableName: t => t | ||
}; | ||
@@ -20,9 +21,10 @@ function checkFullTableName(m, tableName) { | ||
} | ||
function theTableName(summary, tableName, fullTableName) { | ||
function fullTableName(summary, tableName) { | ||
const foundInSummary = summary.tables[tableName]; | ||
const nameToCheck = fullTableName ? fullTableName : foundInSummary ? foundInSummary.tableName : tableName; | ||
const nameToCheck = foundInSummary ? foundInSummary.tableName : tableName; | ||
return nameToCheck; | ||
} | ||
exports.fullTableName = fullTableName; | ||
function getTableMetaData(summary, m, tableName) { | ||
const nameToCheck = theTableName(summary, tableName, undefined); | ||
const nameToCheck = fullTableName(summary, tableName); | ||
const foundInMeta = m.tables[nameToCheck]; | ||
@@ -34,4 +36,4 @@ if (!foundInMeta) | ||
const validateTableName = (summary, m) => { | ||
return (tableName, fullTableName) => { | ||
const nameToCheck = theTableName(summary, tableName, fullTableName); | ||
return (tableName) => { | ||
const nameToCheck = fullTableName(summary, tableName); | ||
return checkFullTableName(m, nameToCheck); | ||
@@ -105,5 +107,6 @@ }; | ||
validateLink: (0, exports.validateLinks)(summary, m), | ||
useIdsOrSingleFkLinkOrError: (0, exports.useIdsOrSingleFkLinkOrError)(summary, m) | ||
useIdsOrSingleFkLinkOrError: (0, exports.useIdsOrSingleFkLinkOrError)(summary, m), | ||
actualTableName: t => fullTableName(summary, t) | ||
}; | ||
} | ||
exports.DalPathValidator = DalPathValidator; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const validator_1 = require("./validator"); | ||
const dal_fixture_1 = require("./dal.fixture"); | ||
const fixtures_1 = require("@dbpath/fixtures"); | ||
describe("validators", () => { | ||
describe("tableNameValidator", () => { | ||
it("should accept tables that are valid", () => { | ||
expect((0, validator_1.validateTableName)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver")).toEqual([]); | ||
expect((0, validator_1.validateTableName)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", "drivertable")).toEqual([]); | ||
expect((0, validator_1.validateTableName)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("drivertable")).toEqual([]); | ||
expect((0, validator_1.validateTableName)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("mission")).toEqual([]); | ||
expect((0, validator_1.validateTableName)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("notin", "drivertable")).toEqual([]); | ||
expect((0, validator_1.validateTableName)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver")).toEqual([]); | ||
expect((0, validator_1.validateTableName)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("drivertable")).toEqual([]); | ||
expect((0, validator_1.validateTableName)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("mission")).toEqual([]); | ||
}); | ||
it("should reject table names that are not in summary or metadata", () => { | ||
expect((0, validator_1.validateTableName)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("notin")).toEqual([ | ||
expect((0, validator_1.validateTableName)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("notin")).toEqual([ | ||
"Table notin is not known. Legal tables", | ||
" driver_aud,drivertable,mission,mission_aud" | ||
]); | ||
expect((0, validator_1.validateTableName)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", "notin")).toEqual([ | ||
"Table notin is not known. Legal tables", | ||
" driver_aud,drivertable,mission,mission_aud" | ||
]); | ||
expect((0, validator_1.validateTableName)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("notin", "notin")).toEqual([ | ||
"Table notin is not known. Legal tables", | ||
" driver_aud,drivertable,mission,mission_aud" | ||
]); | ||
}); | ||
@@ -31,7 +21,7 @@ }); | ||
it("should accept fields that are valid", () => { | ||
expect((0, validator_1.validateFields)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", ["driverid", "name"])).toEqual([]); | ||
expect((0, validator_1.validateFields)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("drivertable", ["driverid", "name"])).toEqual([]); | ||
expect((0, validator_1.validateFields)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver", ["driverid", "name"])).toEqual([]); | ||
expect((0, validator_1.validateFields)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("drivertable", ["driverid", "name"])).toEqual([]); | ||
}); | ||
it("should reject fields that are invalid", () => { | ||
expect((0, validator_1.validateFields)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", ["driverid", "name", "notIn"])).toEqual([ | ||
expect((0, validator_1.validateFields)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver", ["driverid", "name", "notIn"])).toEqual([ | ||
"Fields notIn are not known for table driver. Legal fields", | ||
@@ -44,4 +34,4 @@ " driverid,name" | ||
it("should accept links that are valid", () => { | ||
expect((0, validator_1.validateLinks)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", "mission", [{ fromId: 'driverid', toId: 'driverid' }])).toEqual([]); | ||
expect((0, validator_1.validateLinks)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", "mission", [{ fromId: 'driverid', toId: 'id' }, { fromId: 'driverid', toId: 'driverid' }])).toEqual([]); | ||
expect((0, validator_1.validateLinks)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver", "mission", [{ fromId: 'driverid', toId: 'driverid' }])).toEqual([]); | ||
expect((0, validator_1.validateLinks)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver", "mission", [{ fromId: 'driverid', toId: 'id' }, { fromId: 'driverid', toId: 'driverid' }])).toEqual([]); | ||
}); | ||
@@ -51,7 +41,7 @@ }); | ||
it("should accept links that follow a fk", () => { | ||
expect((0, validator_1.validateLinks)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", "mission", [])).toEqual([]); | ||
expect((0, validator_1.validateLinks)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", "driver_aud", [])).toEqual([]); | ||
expect((0, validator_1.validateLinks)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver", "mission", [])).toEqual([]); | ||
expect((0, validator_1.validateLinks)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver", "driver_aud", [])).toEqual([]); | ||
}); | ||
it("should reject links that do not follow a fk driver to driver", () => { | ||
expect((0, validator_1.validateLinks)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", "driver", [])).toEqual([ | ||
expect((0, validator_1.validateLinks)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver", "driver", [])).toEqual([ | ||
"No foreign key from driver to driver. Valid links are ", | ||
@@ -63,3 +53,3 @@ " driver.(driverid,id)driver_aud", | ||
it("should reject links that do not follow a fk driver to mission_aud", () => { | ||
expect((0, validator_1.validateLinks)(dal_fixture_1.sampleSummary, dal_fixture_1.sampleMeta)("driver", "mission_aud", [])).toEqual([ | ||
expect((0, validator_1.validateLinks)(fixtures_1.sampleSummary, fixtures_1.sampleMeta)("driver", "mission_aud", [])).toEqual([ | ||
"No foreign key from driver to mission_aud. Valid links are ", | ||
@@ -66,0 +56,0 @@ " driver.(driverid,id)driver_aud", |
{ | ||
"name": "@dbpath/dal", | ||
"description": "", | ||
"version": "0.2.4", | ||
"version": "0.2.6", | ||
"main": "dist/index", | ||
@@ -20,3 +20,4 @@ "types": "dist/index", | ||
"dependencies": { | ||
"@dbpath/config": "0.2.4" | ||
"@dbpath/config": "0.2.6", | ||
"@dbpath/fixtures": "0.2.6" | ||
}, | ||
@@ -23,0 +24,0 @@ "devDependencies": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
16939
2
13
316
+ Added@dbpath/fixtures@0.2.6
+ Added@dbpath/config@0.2.6(transitive)
+ Added@dbpath/fixtures@0.2.6(transitive)
+ Added@dbpath/types@0.2.6(transitive)
+ Added@dbpath/utils@0.2.6(transitive)
- Removed@dbpath/config@0.2.4(transitive)
Updated@dbpath/config@0.2.6