warehouse-models v6.0.2
warehouse-models
Data models for Warehouse.ai. Built on top of dynamodb and dynastar.
Install
npm install --save warehouse-modelsUsage
All of the objects returned from this module have the same api as
dynastar with the schemas as mentioned later.
const dynamo = require('dynamodb-x')
const models = require('warehouse-models')(dynamo);
...
// from passing dynamodb.define to the constructor of dynastar we get...
const Build = models.Build;
const Version = models.Version;
...
Build.findFirst({ ... }, function (err, data) { .... });*** Note that with the new dynamo release of warehouse-models (V.6.0.0), you will to need to provide a value for locale as part of the argument to findOne.
Build.findOne({ name: 'email', env: 'prod'}, function (err, data) { .... }); // pre 6.0.0
Build.findOne({ name: 'email', env: 'prod', locale: 'en-US' }, function (err, data) { .... }); // post 6.0.0API
All schemas for the API documentation are written using
dynamodb's notation.
The following sections contain the column/attribute mappings for each table.
Legend:
(pk) - partition-key (sk) - sort/range key
Build (build)
Represent an individual build of a package.
| Column | Type | Summary |
|---|---|---|
| key (pk) | string | ${name}!${env}!${version} |
| env | string | What environment is this build made for (dev, test, etc.) |
| name | string | What package has been built |
| version | string | What version of a package does this build represent |
| buildId | string | A build's unique id |
| previousBuildId | string | Hold a reference to the previous build id |
| rollbackBuildIds | map | timestamp string mapped to the rollback id |
| locale (sk) | string | What locale this was built for |
| createDate | string | dynamodb's createdAt |
| cdnUrl | string | URL of CDN to be used as a base for all the artifacts |
| fingerprints | stringSet | Primary keys for build_files, represents the unique contents of the file |
| artifacts | stringSet | fingerprint/file-name |
| recommended | stringSet | Possible reduced set of artifacts based on a build's configuration |
Build File (build_file)
Represent an individual file (unit) that is built during the build of an entire package.
| Column | Type | Summary |
|---|---|---|
| fingerprint (pk) | string | The actual fingerprint of a file, like a md5 hash etc. |
| buildId | string | The build_id associated with the build file |
| url | string | CDN URL for the build_file |
| createDate | string | dynamodb's createdAt |
| env | string | What environment is this file built for |
| locale | string | What locale was this file built for |
| name | string | Name of a built file |
| version | string | Version of the package the file is built for |
| extension | string | .js, .css. resource type extension |
| filename | string | given filename for the build-file |
Build Head (build_head)
Represent the head build version of an entire package.
On an npm install, the env will have to be passed in.
| Column | Type | Summary |
|---|---|---|
| key (pk) | string | ${name}!${env}!${version} |
| name | string | What package has been build |
| env | string | What environment is this build made for (dev, test, etc.) |
| buildId | string | A build's unique id |
| previousBuildId | string | Hold a reference to the previous build id |
| rollbackBuildIds | map | timestamp string mapped to the rollback id |
| createDate | string | dynamodb's createdAt |
| udpateDate | string | dynamodb's updatedAt |
| version | string | What version of a package does this build represent |
| locale (sk) | string | What locale this was built for |
| cdnUrl | string | URL of CDN to be used as a base for all the artifacts |
| fingerprints | stringSet | Primary keys for build_files, represents the unique contents of the file |
| artifacts | stringSet | fingerprint/file-name |
| recommended | stringSet | Possible reduced set of artifacts based on a build's configuration |
Dependent (dependent)
A dependency graph where every packaged publish can ensure that any package that depends on it can be updated. This should constantly be updated on every publish.
| Column | Type | Summary |
|---|---|---|
| name (pk) | string | Name of a package |
| dependents | stringSet | Name of packages are dependent on me |
Dependent Of (dependent_of)
An inverse of dependent in order for a dependent package to see what its
parent is.
| Column | Type | Summary |
|---|---|---|
| pkg (pk) | string | Name of a package |
| dependentOf | string | Name of the parent package |
Release Line (release_line)
Represent all the necessary information for a given package/version to know
what needs to be deployed, considering all its dependents as well.
(When combined with Release Line Dependents)
| Column | Type | Summary |
|---|---|---|
| key (pk) | string | ${pkg}!${version} |
| pkg | string | Name of a package |
| version | string | The current version number or latest |
| previousVersion | string | The previous version number |
Release Line Dependents (release_line_dep)
Represent all the necessary information for a given package/version to know
what needs to be deployed, considering all its dependents as well.
(When combined with Release Line)
| Column | Type | Summary |
|---|---|---|
| key (pk) | string | ${pkg}!${version} |
| pkg | string | Name of a package |
| version | string | The current version number |
| previousVersion | string | The previous version number |
| dependent (sk) | string | The dependent package |
| dependentVersion | string | The dependent package version |
Release Line Head (release_line_head)
Represents the head release-line for a given package.
| Column | Type | Summary |
|---|---|---|
| pkg (pk) | string | Name of a package |
| previousVersion | string | The previous version number |
| version | string | The current version number |
Version (version)
Records of every npm publish of a package to the registry. Mostly needed for
npm install from the builder, as it will npm install a specific tag. That tag
will be tied to a specific version (look at the package table). A lookup will
occur against the version table afterwards to send down the package.json.
| Column | Type | Summary |
|---|---|---|
| name (pk) | string | Name of a package |
| version (sk) | string | Version of a package |
| value | string | Full json sent of an npm publish |
Package (package)
Represent an entire published packaged (package.json) to the registry.
Because the number of properties in package.json could be infinite,
only relevant columns are described.
Examples of package.json
| Column | Type | Summary |
|---|---|---|
| name (pk) | string | Name of a package |
| version | string | Version of a package |
| description | string | Package description |
| main | string | Export file of a package |
| gitHead | string | HEAD git sha of package |
| extended | map | object of any other properties we have |
| keywords | stringSet | package.json keywords array |
| bundledDependencies | stringSet | any bundled dependencies of a package |
| distTags | map | Mapping of tag to version e.g. { "production": "1.1.0" } |
| envs | map | ? |
| metadata | map | ? |
| config | map | Specific configuration for package |
| repository | map | Repo config of package.json |
| dependencies | map | Deps of package |
| devDependencies | map | DevDeps of package |
| peerDependencies | map | peerDeps of package |
| optionalDependencies | map | any optional dependencies |
Test
Ensure you have localstack running local.
npm test