Data models for Warehouse.ai. Built on top of dynamodb and dynastar.
npm install --save warehouse-models
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.0
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
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Ensure you have localstack running local.
npm test