{"_id":"@axadn/loopback-connector-mssql","_rev":"1-aa82c69345ccc71b7e8ba66d1388d4ac","name":"@axadn/loopback-connector-mssql","dist-tags":{"latest":"3.3.0"},"versions":{"3.3.0":{"name":"@axadn/loopback-connector-mssql","version":"3.3.0","description":"Microsoft SQL Server connector for LoopBack","engines":{"node":">=6"},"keywords":["StrongLoop","LoopBack","Microsoft SQL Server","MSSQL","Database","DataSource","Connector"],"main":"index.js","dependencies":{"async":"^2.6.1","debug":"^3.1.0","loopback-connector":"^4.5.0","mssql":"^4.1.0","strong-globalize":"^4.1.1","sqlcmdjs":"^1.5.0"},"devDependencies":{"bluebird":"^3.5.1","eslint":"^5.2.0","eslint-config-loopback":"^11.0.0","loopback-datasource-juggler":"^3.0.0","mocha":"^5.2.0","rc":"^1.0.0","should":"^13.2.1","sinon":"^6.1.3"},"scripts":{"lint":"eslint .","pretest":"node pretest.js","test":"mocha","posttest":"npm run lint","prepublish":"node remove-regenerator.js"},"repository":{"type":"git","url":"git+https://github.com/axadn/loopback-connector-mssql.git"},"copyright.owner":"IBM Corp.","license":"MIT","gitHead":"485fd0d75a21ae6027f02b9b1242564fd4cbd11d","bugs":{"url":"https://github.com/axadn/loopback-connector-mssql/issues"},"homepage":"https://github.com/axadn/loopback-connector-mssql#readme","bundleDependencies":["mssql"],"_id":"@axadn/loopback-connector-mssql@3.3.0","_npmVersion":"6.2.0","_nodeVersion":"10.1.0","_npmUser":{"name":"axadn","email":"adanmarrufo@gmail.com"},"dist":{"integrity":"sha512-Sw/i9W43EOyDM3YfeLMMnIHY4XEZeMqMiBUxep1GN6QnDNBCTU1FUR0FKmDKcXd1d2r8F8H/OzUiHM3C5VCL/A==","shasum":"b64cebdcb12556ac4f9528f8e75292763483874e","tarball":"https://registry.npmjs.org/@axadn/loopback-connector-mssql/-/loopback-connector-mssql-3.3.0.tgz","fileCount":2094,"unpackedSize":4006497,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJcQJRxCRA9TVsSAnZWagAAFEgQAIU7HqXSAI/1m8of3tBJ\n0bP5pAr6MECPd6JS87e42d62soNaMPLbWY6xr++lhafyNgDM1q3Kd0SnOSjh\n+ELsa24WGzCggxfwKFNr8ymJ/iqaiUF3ZPJN+RhKjAvP0Mm5su/96/Y+480r\nJ8xPYkbQAOb2pX/qnKCcLUMjHGADJ1NdJGsKzvPjPOD7fzmk3gpbdUJqRBsv\nUXXzP83N+EQ/QE8BhVq2LqUECEWHFrQfVs6AP/Ejd6xHhDeJO03BA7NLSb9q\n60uNlpEDjTtRtA3HOKsTz3eEJc38rQ1eta0IC3ocjyljxOmJ9ax8aHOUE4WG\n1W6ELKBJur5Eokqr07duOvxbOuHfqBlRfiotzfYhNWFrGqJv4xQ2Fhck3n1b\neL/lodxLHCzpkkQ3EcLe5SBYto8vF3wK/00DCL4qiMuuL10akgFASEKGdW3T\nvYkjfmoe16VHXv+niirWwUG4uUa9O4ePt3W7MiXkG0RsG2Hx4JsNzQnxT1Bu\nCkLVgfD2/NciBOy0ECKepL5lH/BiFgFohRYALMNJzqopWpZw18XIw3+jtewD\n2/8m9K0aHjNtq5kF2ekxAXVTdfap9DZMB2UXMXDZZGFHglFZYjTvgP3SRCCv\nKbZ88UXylpmyG/zhQIlHG4U4a5yqbP3gbJt32/wGIQL4xcxBa7vCHxxvxc1Z\n+I3y\r\n=7xCh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/JUhQmxGgFe0qdjNnkJ5gPBxQcP5x4+tc7Pi97QqQfQIhAN1BenJ26I3j72TYRkt6QJgJHBccKdNuhHT+UKM5IXI+"}]},"maintainers":[{"name":"axadn","email":"adanmarrufo@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/loopback-connector-mssql_3.3.0_1547736176634_0.6494414037344836"},"_hasShrinkwrap":false}},"time":{"created":"2019-01-17T14:42:56.451Z","3.3.0":"2019-01-17T14:42:56.848Z","modified":"2022-04-04T17:08:17.649Z"},"maintainers":[{"name":"axadn","email":"adanmarrufo@gmail.com"}],"description":"Microsoft SQL Server connector for LoopBack","homepage":"https://github.com/axadn/loopback-connector-mssql#readme","keywords":["StrongLoop","LoopBack","Microsoft SQL Server","MSSQL","Database","DataSource","Connector"],"repository":{"type":"git","url":"git+https://github.com/axadn/loopback-connector-mssql.git"},"bugs":{"url":"https://github.com/axadn/loopback-connector-mssql/issues"},"license":"MIT","readme":"# loopback-connector-mssql\n\n[Microsoft SQL Server](https://www.microsoft.com/en-us/sql-server/default.aspx) is a relational database management system developed by Microsoft.\nThe `loopback-connector-mssql` module is the Microsoft SQL Server connector for the LoopBack framework.\n\n<div class=\"gh-only\">\nFor more information, see <a href=\"http://loopback.io/doc/en/lb3/SQL-Server-connector.html\">LoopBack documentation</a>.\n</div>\n\n## Installation\n\nIn your application root directory, enter:\n\n```shell\n$ npm install loopback-connector-mssql --save\n```\n\nThis will install the module from npm and add it as a dependency to the application's `package.json` file.\n\nIf you create a SQL Server data source using the data source generator as described below, you don't have to do this, since the generator will run `npm install` for you.\n\n## Creating a SQL Server data source\n\nUse the [Data source generator](http://loopback.io/doc/en/lb3/Data-source-generator.html) to add a SQL Server data source to your application.  \nThe generator will prompt for the database server hostname, port, and other settings\nrequired to connect to a SQL Server database.  It will also run the `npm install` command above for you.\n\nThe entry in the application's `/server/datasources.json` will look like this (for example):\n\n{% include code-caption.html content=\"/server/datasources.json\" %}\n```javascript\n\"sqlserverdb\": {\n    \"name\": \"sqlserverdb\",\n    \"connector\": \"mssql\",\n    \"host\": \"myhost\",\n    \"port\": 1234,\n    \"url\": \"mssql://username:password@dbhost/dbname\",\n    \"database\": \"mydb\",\n    \"password\": \"admin\",\n    \"user\": \"admin\",\n  }\n```\n\nEdit `datasources.json` to add other properties that enable you to connect the data source to a SQL Server database.\n\nTo connect to a SQL Server instance running in Azure, you must specify a qualified user name with hostname, and add the following to the data source declaration:\n\n```js\n\"options\": {\n   \"encrypt\": true\n   ...\n}\n```\n\n### Connector settings\n\nTo configure the data source to use your MS SQL Server database, edit `datasources.json` and add the following settings as appropriate.\nThe MSSQL connector uses [node-mssql](https://github.com/patriksimek/node-mssql) as the driver. For more information about configuration parameters,\nsee [node-mssql documentation](https://github.com/patriksimek/node-mssql#configuration-1).\n\n<table>\n  <thead>\n    <tr>\n      <th>Property</th>\n      <th>Type</th>\n      <th>Default</th>\n      <th>Description</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>connector</td>\n      <td>String</td>\n      <td> </td>\n      <td>\n        Either \"loopback-connector-mssql\" or \"mssql\"\n      </td>\n    </tr>\n    <tr>\n      <td>database</td>\n      <td>String</td>\n      <td> </td>\n      <td>Database name</td>\n    </tr>\n    <tr>\n      <td>debug</td>\n      <td>Boolean</td>\n      <td> </td>\n      <td>If true, turn on verbose mode to debug database queries and lifecycle.</td>\n    </tr>\n    <tr>\n      <td>host</td>\n      <td>String</td>\n      <td>localhost</td>\n      <td>Database host name</td>\n    </tr>\n    <tr>\n      <td>password</td>\n      <td>String</td>\n      <td> </td>\n      <td>Password to connect to database</td>\n    </tr>\n    <tr>\n      <td>port</td>\n      <td>Number</td>\n      <td>1433</td>\n      <td>Database TCP port</td>\n    </tr>\n    <tr>\n      <td>schema</td>\n      <td>String</td>\n      <td>dbo</td>\n      <td>Database schema</td>\n    </tr>\n    <tr>\n      <td>url</td>\n      <td>String</td>\n      <td> </td>\n      <td>Use instead of the <code>host</code>, <code>port</code>, <code>user</code>, <code>password</code>,\n        and <code>database</code> properties.  For example: 'mssql://test:mypassword@localhost:1433/dev'.\n      </td>\n    </tr>\n    <tr>\n      <td>user</td>\n      <td>String</td>\n      <td> </td>\n      <td>Qualified username with host name, for example \"user@your.sqlserver.dns.host\".</td>\n    </tr>\n  </tbody>\n</table>\n\nInstead of specifying individual connection properties, you can use a single `url` property that combines them into a single string, for example:\n\n```javascript\n\"accountDB\": {\n    \"url\": \"mssql://test:mypassword@localhost:1433/demo?schema=dbo\"\n}\n```\n\nThe application will automatically load the data source when it starts. You can then refer to it in code, for example:\n\n{% include code-caption.html content=\"/server/boot/script.js\" %}\n```javascript\nvar app = require('./app');\nvar dataSource = app.dataSources.accountDB;\n```\n\nAlternatively, you can create the data source in application code; for example:\n\n{% include code-caption.html content=\"/server/script.js\" %}\n```javascript\nvar DataSource = require('loopback-datasource-juggler').DataSource;\nvar dataSource = new DataSource('mssql', config);\nconfig = { ... };  // JSON object as specified above in \"Connector settings\"\n```\n\n\n### Model discovery\n\nThe SQL Server connector supports _model discovery_ that enables you to create LoopBack models\nbased on an existing database schema using the unified [database discovery API](http://apidocs.strongloop.com/loopback-datasource-juggler/#datasource-prototype-discoverandbuildmodels).  For more information on discovery, see [Discovering models from relational databases](https://loopback.io/doc/en/lb3/Discovering-models-from-relational-databases.html).\n\n### Auto-migratiion\n\nThe SQL Server connector also supports _auto-migration_ that enables you to create a database schema\nfrom LoopBack models using the [LoopBack automigrate method](http://apidocs.strongloop.com/loopback-datasource-juggler/#datasource-prototype-automigrate).\nFor each model, the LoopBack SQL Server connector creates a table in the 'dbo' schema in the database.\n\nFor more information on auto-migration, see [Creating a database schema from models](https://loopback.io/doc/en/lb3/Creating-a-database-schema-from-models.html) for more information.\n\nDestroying models may result in errors due to foreign key integrity. First delete any related models by calling delete on models with relationships.\n\n## Defining models\n\nThe model definition consists of the following properties:\n\n* `name`: Name of the model, by default, the table name in camel-case.\n* `options`: Model-level operations and mapping to Microsoft SQL Server schema/table. Use the `mssql` model property to specify additional SQL Server-specific properties for a LoopBack model.\n* `properties`: Property definitions, including mapping to Microsoft SQL Server columns.\n  - For each property, use the `mssql` key to specify additional settings for that property/field.\n\nFor example:\n\n{% include code-caption.html content=\"/common/models/inventory.json\" %}\n```javascript\n{\"name\": \"Inventory\", \n     \"options\": {\n       \"idInjection\": false,\n       \"mssql\": {\n         \"schema\": \"strongloop\",\n         \"table\": \"inventory\"\n       }\n     }, \"properties\": {\n      \"id\": {\n        \"type\": \"String\",\n        \"required\": false,\n        \"length\": 64,\n        \"precision\": null,\n        \"scale\": null,\n        \"mssql\": {\n          \"columnName\": \"id\",\n          \"dataType\": \"varchar\",\n          \"dataLength\": 64,\n          \"dataPrecision\": null,\n          \"dataScale\": null,\n          \"nullable\": \"NO\"\n        }\n      },\n      \"productId\": {\n        \"type\": \"String\",\n        \"required\": false,\n        \"length\": 64,\n        \"precision\": null,\n        \"scale\": null,\n        \"id\": 1,\n        \"mssql\": {\n          \"columnName\": \"product_id\",\n          \"dataType\": \"varchar\",\n          \"dataLength\": 64,\n          \"dataPrecision\": null,\n          \"dataScale\": null,\n          \"nullable\": \"YES\"\n        }\n      },\n      \"locationId\": {\n        \"type\": \"String\",\n        \"required\": false,\n        \"length\": 64,\n        \"precision\": null,\n        \"scale\": null,\n        \"id\": 1,\n        \"mssql\": {\n          \"columnName\": \"location_id\",\n          \"dataType\": \"varchar\",\n          \"dataLength\": 64,\n          \"dataPrecision\": null,\n          \"dataScale\": null,\n          \"nullable\": \"YES\"\n        }\n      },\n      \"available\": {\n        \"type\": \"Number\",\n        \"required\": false,\n        \"length\": null,\n        \"precision\": 10,\n        \"scale\": 0,\n        \"mssql\": {\n          \"columnName\": \"available\",\n          \"dataType\": \"int\",\n          \"dataLength\": null,\n          \"dataPrecision\": 10,\n          \"dataScale\": 0,\n          \"nullable\": \"YES\"\n        }\n      },\n      \"total\": {\n        \"type\": \"Number\",\n        \"required\": false,\n        \"length\": null,\n        \"precision\": 10,\n        \"scale\": 0,\n        \"mssql\": {\n          \"columnName\": \"total\",\n          \"dataType\": \"int\",\n          \"dataLength\": null,\n          \"dataPrecision\": 10,\n          \"dataScale\": 0,\n          \"nullable\": \"YES\"\n        }\n      }\n    }}\n```\n\n## Type mapping\n\nSee [LoopBack types](http://loopback.io/doc/en/lb3/LoopBack-types.html) for details on LoopBack's data types.\n\n### LoopBack to SQL Server types\n\n<table>\n  <thead>\n    <tr>\n      <th>LoopBack Type</th>\n      <th>SQL Server Type</th>\n    </tr>\n  </thead>\n  <tbody>    \n    <tr>\n      <td>Boolean</td>\n      <td>BIT</td>\n    </tr>\n    <tr>\n      <td>Date</td>\n      <td>DATETIME</td>\n    </tr>\n    <tr>\n      <td>GeoPoint</td>\n      <td>FLOAT</td>\n    </tr>\n    <tr>\n      <td>Number</td>\n      <td>INT</td>\n    </tr>\n    <tr>\n      <td>\n        String\n        JSON\n      </td>\n      <td>\n        NVARCHAR\n      </td>\n    </tr>\n  </tbody>\n</table>\n\n### SQL Server to LoopBack types\n\n<table>\n  <thead>\n    <tr>\n      <th>SQL Server Type</th>\n      <th>LoopBack Type</th>\n    </tr>\n  </thead>\n  <tbody>    \n    <tr>\n      <td>BIT</td>\n      <td>Boolean</td>\n    </tr>\n    <tr>\n      <td>\n        BINARY<br>VARBINARY<br>IMAGE\n      </td>\n      <td>Node.js <a class=\"external-link\" href=\"http://nodejs.org/api/buffer.html\" rel=\"nofollow\">Buffer object</a></td>\n    </tr>\n    <tr>\n      <td>\n        DATE<br>DATETIMEOFFSET<br>DATETIME2<br>SMALLDATETIME<br>DATETIME<br>TIME\n      </td>\n      <td>Date</td>\n    </tr>\n    <tr>\n      <td>POINT</td>\n      <td><a href=\"http://apidocs.strongloop.com/loopback-datasource-juggler/#geopoint\">GeoPoint</a></td>\n    </tr>\n    <tr>\n      <td>\n        BIGINT<br>NUMERIC<br>SMALLINT<br>DECIMAL<br>SMALLMONEY<br>INT<br>TINYINT<br>MONEY<br>FLOAT<br>REAL\n      </td>\n      <td>Number</td>\n    </tr>\n    <tr>\n      <td>\n        CHAR<br>VARCHAR<br>TEXT<br>NCHAR<br>NVARCHAR<br>NTEXT<br>CHARACTER VARYING<br>CHARACTER\n      </td>\n      <td>String</td>\n    </tr>\n  </tbody>\n</table>\n\n## Running tests\n\n### Own instance\nIf you have a local or remote MSSQL instance and would like to use that to run the test suite, use the following command:\n- Linux\n```bash\nMSSQL_HOST=<HOST> MSSQL_PORT=<PORT> MSSQL_USER=<USER> MSSQL_PASSWORD=<PASSWORD> MSSQL_DATABASE=<DATABASE> CI=true npm test\n```\n- Windows\n```bash\nSET MSSQL_HOST=<HOST> SET MSSQL_PORT=<PORT> SET MSSQL_USER=<USER> SET MSSQL_PASSWORD=<PASSWORD> SET MSSQL_DATABASE=<DATABASE> SET CI=true npm test\n```\n\n### Docker\nIf you do not have a local MSSQL instance, you can also run the test suite with very minimal requirements.\n- Assuming you have [Docker](https://docs.docker.com/engine/installation/) installed, run the following script which would spawn a MSSQL instance on your local:\n```bash\nsource setup.sh <HOST> <PORT> <USER> <PASSWORD> <DATABASE>\n```\nwhere `<HOST>`, `<PORT>`, `<USER>`, `<PASSWORD>` and `<DATABASE>` are optional parameters. The default values are `localhost`, `1433`, `sa`, `M55sqlT35t` and `master` respectively.\n- Run the test:\n```bash\nnpm test\n```\n","readmeFilename":"README.md"}