Extend database with more tables, rewrite API doc, improve API endpoints
This commit is contained in:
819
README.md
819
README.md
@@ -48,678 +48,241 @@ TODO
|
|||||||
|
|
||||||
The application host it's data in a SQLite database. The access is managed by an [ExpressJs](https://expressjs.com/) server which offers many REST-API endpoints for the frontend. The REST-API server runs on port 3000.
|
The application host it's data in a SQLite database. The access is managed by an [ExpressJs](https://expressjs.com/) server which offers many REST-API endpoints for the frontend. The REST-API server runs on port 3000.
|
||||||
|
|
||||||
#### `/api`
|
---
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #70AFFD; margin-bottom: 20px">
|
#### Validate
|
||||||
<summary style="background-color: #70AFFD; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Server check</summary>
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
<details>
|
||||||
Check if server is available
|
<summary><code style="background-color:#69CA92"><b>POST</b></code> <code><b>/accounts/login</b></code> <code> (Login for user)</code></summary>
|
||||||
|
|
||||||
<h4>Request</h4>
|
##### Parameters
|
||||||
<code>GET /api</code>
|
> | name | type | data type | description |
|
||||||
|
> | --- | --- | --- | --- |
|
||||||
|
> | username | required | string | Username of the account |
|
||||||
|
> | password | required | string | Password of the account |
|
||||||
|
|
||||||
<br>
|
##### Responses
|
||||||
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
|
> | `200` | `application/json` | `AccountObject` + `Addresses`, `Payments`, `AccountRole` |
|
||||||
|
> | `400` | `application/json` | `{code: 400, message: "Bad Request"}` |
|
||||||
|
> | `401` | `application/json` | `{code: 401, message: "Unauthorized"}` |
|
||||||
|
</details>
|
||||||
|
|
||||||
<table>
|
---
|
||||||
<header>
|
|
||||||
<th>Parameter</th>
|
#### Listing existing
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
<details>
|
||||||
</header>
|
<summary><code style="background-color:#70AFFD"><b>GET</b></code> <code><b>/products/</b></code> <code> (Get all products)</code>
|
||||||
<tbody>
|
</summary>
|
||||||
<tr>
|
|
||||||
<td>-</td>
|
##### Parameters
|
||||||
<td>-</td>
|
> None
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
##### Responses
|
||||||
</tbody>
|
> | http code | content-type | response |
|
||||||
</table>
|
> | :---: | --- | --- |
|
||||||
</div>
|
> | `200` | `application/json` | `Array<ProductModel>` + `Category`, `Brand` |
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code style="background-color:#70AFFD"><b>GET</b></code> <code><b>/products/:id</b></code> <code> (Get a product by it's id)</code>
|
||||||
|
</summary>
|
||||||
|
|
||||||
|
##### Parameters
|
||||||
|
> | name | type | data type | description |
|
||||||
|
> | :---: | --- | --- | --- |
|
||||||
|
> | `id` | required | string | ID of product in the database |
|
||||||
|
|
||||||
|
##### Responses
|
||||||
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
|
> | `200` | `application/json` | `ProductModel` + `Category`, `Brand` |
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code style="background-color:#70AFFD"><b>GET</b></code> <code><b>/orders/:id</b></code> <code> (Get all orders of an user)</code>
|
||||||
|
</summary>
|
||||||
|
|
||||||
|
##### Parameters
|
||||||
|
> | name | type | data type | description |
|
||||||
|
> | --- | --- | --- | --- |
|
||||||
|
> | `id` | required | string | ID of userAccount in the database |
|
||||||
|
|
||||||
|
##### Responses
|
||||||
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
|
> | `200` | `application/json` | `ProductModel` + `Order`, `OrderItem`, `Product` |
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code style="background-color:#70AFFD"><b>GET</b></code> <code><b>/categories/</b></code> <code> (Get all Categories)</code>
|
||||||
|
</summary>
|
||||||
|
|
||||||
|
##### Parameters
|
||||||
|
> None
|
||||||
|
|
||||||
|
##### Responses
|
||||||
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
|
> | `200` | `application/json` | `Array<Categories>` |
|
||||||
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Creating new
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code style="background-color:#69CA92"><b>POST</b></code> <code><b>/accounts/</b></code> <code> (Create a new account)</code>
|
||||||
|
</summary>
|
||||||
|
|
||||||
|
##### Parameters
|
||||||
|
> | name | type | data type | description |
|
||||||
|
> | :---: | --- | --- | --- |
|
||||||
|
> | None | required | object (JSON) | Model of an Account |
|
||||||
|
|
||||||
|
##### Responses
|
||||||
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
|
> | `201` | `application/json` | `AccountModel` |
|
||||||
|
> | `400` | `application/json` | `{code: 400, message: "Username too short!"}` |
|
||||||
|
> | `400` | `application/json` | `{code: 400, message: "Password too short!"}` |
|
||||||
|
> | `409` | `application/json` | `{code: 409, message: "Username already in use"}` |
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #70AFFD; margin-bottom: 20px">
|
<details>
|
||||||
<summary style="background-color: #70AFFD; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Database reset</summary>
|
<summary><code style="background-color:#69CA92"><b>POST</b></code> <code><b>/products/</b></code> <code> (Create a new product)</code>
|
||||||
<div style="padding: 0px 20px 10px">
|
</summary>
|
||||||
|
|
||||||
<h4>Description</h4>
|
##### Parameters
|
||||||
Delete and refill the database with example values
|
> | name | type | data type | description |
|
||||||
|
> | :---: | --- | --- | --- |
|
||||||
|
> | None | required | object (JSON) | Model of a Product |
|
||||||
|
|
||||||
<h4>Request</h4>
|
##### Responses
|
||||||
<code>GET /api/resetdatabase</code>
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
<br>
|
> | `201` | `application/json` | `ProductModel` |
|
||||||
|
> | `400` | `application/json` | `{code: 400, message: "..."}` |
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Parameter</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>-</td>
|
|
||||||
<td>-</td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
#### `/categories`
|
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #70AFFD; margin-bottom: 20px">
|
|
||||||
<summary style="background-color: #70AFFD; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">All categories</summary>
|
|
||||||
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
|
||||||
Get all categories
|
|
||||||
|
|
||||||
<h4>Request</h4>
|
|
||||||
<code>GET /categories</code>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Parameter</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>-</td>
|
|
||||||
<td>-</td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h4>Example Response</h4>
|
|
||||||
|
|
||||||
```json
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": 0,
|
|
||||||
"name": "Electronic",
|
|
||||||
"icon": "mdi-chip",
|
|
||||||
"createdAt": "2024-09-13T07:51:40.118Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.118Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"name": "Sports",
|
|
||||||
"icon": "mdi-soccer",
|
|
||||||
"createdAt": "2024-09-13T07:51:40.118Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.118Z"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
```
|
|
||||||
</div>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #69CA92; margin-bottom: 20px">
|
<details>
|
||||||
<summary style="background-color: #69CA92; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Add new category</summary>
|
<summary><code style="background-color:#69CA92"><b>POST</b></code> <code><b>/orders/</b></code> <code> (Create a new order)</code>
|
||||||
<div style="padding: 0px 20px 10px">
|
</summary>
|
||||||
|
|
||||||
<h4>Description</h4>
|
##### Parameters
|
||||||
Add a new category
|
> | name | type | data type | description |
|
||||||
|
> | :---: | --- | --- | --- |
|
||||||
|
> | None | required | object (JSON) | Model of an Order |
|
||||||
|
|
||||||
<h4>Request</h4>
|
##### Responses
|
||||||
<code>POST /categories</code>
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
<br>
|
> | `201` | `application/json` | `OrderModel` |
|
||||||
|
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Body Parameters</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>name</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Name of the category</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>icon</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Material Design Icon</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #EB5246; margin-bottom: 20px">
|
<details>
|
||||||
<summary style="background-color: #EB5246; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Delete category</summary>
|
<summary><code style="background-color:#69CA92"><b>POST</b></code> <code><b>/categories/</b></code> <code> (Create a new category)</code>
|
||||||
<div style="padding: 0px 20px 10px">
|
</summary>
|
||||||
|
|
||||||
<h4>Description</h4>
|
##### Parameters
|
||||||
Delete a category by it's id
|
> | name | type | data type | description |
|
||||||
|
> | :---: | --- | --- | --- |
|
||||||
|
> | None | required | object (JSON) | Model of a Category |
|
||||||
|
|
||||||
<h4>Request</h4>
|
##### Responses
|
||||||
<code>DELETE /categories/:id</code>
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
<br>
|
> | `201` | `application/json` | `OrderModel` |
|
||||||
|
> | `400` | `application/json` | `{code: 400, message: "..."}` |
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Parameter</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>id</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Database ID of CategoryModel</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
#### `/products`
|
---
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #70AFFD; margin-bottom: 20px">
|
#### Updating existing
|
||||||
<summary style="background-color: #70AFFD; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">All products</summary>
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
<details>
|
||||||
Get all products
|
<summary><code style="background-color:#F3A63D"><b>PATCH</b></code> <code><b>/accounts/</b></code> <code> (Update data of an existing account)</code>
|
||||||
|
</summary>
|
||||||
|
|
||||||
<h4>Request</h4>
|
##### Parameters
|
||||||
<code>GET /products</code>
|
> | name | type | data type | description |
|
||||||
|
> | :---: | --- | --- | --- |
|
||||||
|
> | None | required | object (JSON) | Model of an Account |
|
||||||
|
|
||||||
<br>
|
##### Responses
|
||||||
|
> | http code | content-type | response |
|
||||||
<table>
|
> | :---: | --- | --- |
|
||||||
<header>
|
> | `200` | `application/json` | AccountModel |
|
||||||
<th>Parameter</th>
|
> | `400` | `application/json` | `{code: 400, message: "..."}` |
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>-</td>
|
|
||||||
<td>-</td>
|
|
||||||
<td>-</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h4>Example Response</h4>
|
|
||||||
|
|
||||||
```json
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": 0,
|
|
||||||
"brand": "Lenovo",
|
|
||||||
"name": "Thinkpad T14",
|
|
||||||
"categoryId": 0,
|
|
||||||
"price": 799.99,
|
|
||||||
"discount": 10,
|
|
||||||
"rating": 4.6,
|
|
||||||
"imageUrl": "thinkpad-t14s.jpg",
|
|
||||||
"description": "Die stabile Arbeitsmaschine. Mit AMD Ryzen 7 89029U, 128 GB RAM und 8 TB M.2 SSD!",
|
|
||||||
"createdAt": "2024-09-13T07:51:40.119Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.119Z",
|
|
||||||
"category": {
|
|
||||||
"id": 0,
|
|
||||||
"name": "Electronic",
|
|
||||||
"icon": "mdi-chip",
|
|
||||||
"createdAt": "2024-09-13T07:51:40.118Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.118Z"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
```
|
|
||||||
</div>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #70AFFD; margin-bottom: 20px">
|
#### Delete existing
|
||||||
<summary style="background-color: #70AFFD; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Request one product</summary>
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
<details>
|
||||||
Get a specific product by it's id
|
<summary><code style="background-color:#EB5246"><b>DELETE</b></code> <code><b>/product/:id</b></code> <code> (Delete a product)</code>
|
||||||
|
</summary>
|
||||||
|
|
||||||
<h4>Request</h4>
|
##### Parameters
|
||||||
<code>GET /products/:id</code>
|
> | name | type | data type | description |
|
||||||
|
> | :---: | --- | --- | --- |
|
||||||
|
> | `id` | required | string | ID of product in the database |
|
||||||
|
|
||||||
<br>
|
##### Responses
|
||||||
|
> | http code | content-type | response |
|
||||||
<table>
|
> | :---: | --- | --- |
|
||||||
<header>
|
> | `200` | `application/json` | `ProductModel` |
|
||||||
<th>Parameter</th>
|
> | `400` | `application/json` | `{code: 400, message: "..."}` |
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>id</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>ID of the product in the database table</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h4>Example Response</h4>
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"id": 0,
|
|
||||||
"brand": "Lenovo",
|
|
||||||
"name": "Thinkpad T14",
|
|
||||||
"categoryId": 0,
|
|
||||||
"price": 799.99,
|
|
||||||
"discount": 10,
|
|
||||||
"rating": 4.6,
|
|
||||||
"imageUrl": "thinkpad-t14s.jpg",
|
|
||||||
"description": "Die stabile Arbeitsmaschine. Mit AMD Ryzen 7 89029U, 128 GB RAM und 8 TB M.2 SSD!",
|
|
||||||
"createdAt": "2024-09-13T07:51:40.119Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.119Z",
|
|
||||||
"category": {
|
|
||||||
"id": 0,
|
|
||||||
"name": "Electronic",
|
|
||||||
"icon": "mdi-chip",
|
|
||||||
"createdAt": "2024-09-13T07:51:40.118Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.118Z"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
</div>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #69CA92; margin-bottom: 20px">
|
<details>
|
||||||
<summary style="background-color: #69CA92; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Add new product</summary>
|
<summary><code style="background-color:#EB5246"><b>DELETE</b></code> <code><b>/categories/:id</b></code> <code> (Delete a category)</code>
|
||||||
<div style="padding: 0px 20px 10px">
|
</summary>
|
||||||
|
|
||||||
<h4>Description</h4>
|
##### Parameters
|
||||||
Add a new product to the database
|
> | name | type | data type | description |
|
||||||
|
> | :---: | --- | --- | --- |
|
||||||
|
> | `id` | required | string | ID of category in the database |
|
||||||
|
|
||||||
<h4>Request</h4>
|
##### Responses
|
||||||
<code>POST /products</code>
|
> | http code | content-type | response |
|
||||||
|
> | :---: | --- | --- |
|
||||||
<br>
|
> | `200` | `application/json` | `CategoryModel` |
|
||||||
|
> | `400` | `application/json` | `{code: 400, message: "..."}` |
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Body Parameters</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>brand</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Brand of the product</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>name</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Name of the product</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>description</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Description of the product</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>categoryId</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>ID of a Category from database</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>price</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Name of the product</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>discount</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Procentual discount, 0 to 100</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>rating</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Product rating from 1 to 5</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>imageUrl</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Name of the uploaded image file</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #EB5246; margin-bottom: 20px">
|
#### Miscs
|
||||||
<summary style="background-color: #EB5246; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Delete product</summary>
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
<details>
|
||||||
Delete a product by it's id
|
<summary><code style="background-color:#70AFFD"><b>GET</b></code> <code><b>/api/</b></code> <code> (Check if server runs)</code>
|
||||||
|
</summary>
|
||||||
|
|
||||||
<h4>Request</h4>
|
##### Parameters
|
||||||
<code>DELETE /products/:id</code>
|
> None
|
||||||
|
|
||||||
<br>
|
##### Responses
|
||||||
|
> | http code | content-type | response |
|
||||||
<table>
|
> | :---: | --- | --- |
|
||||||
<header>
|
> | `200` | None | None |
|
||||||
<th>Parameter</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>id</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Database ID of ProductModel</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary><code style="background-color:#70AFFD"><b>GET</b></code> <code><b>/resetDatabase/</b></code> <code> (Reset the database to it's default values)</code>
|
||||||
|
</summary>
|
||||||
|
|
||||||
#### `/orders`
|
##### Parameters
|
||||||
|
> None
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #70AFFD; margin-bottom: 20px">
|
##### Responses
|
||||||
<summary style="background-color: #70AFFD; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Request orders of user</summary>
|
> | http code | content-type | response |
|
||||||
<div style="padding: 0px 20px 10px">
|
> | :---: | --- | --- |
|
||||||
|
> | `200` | None | None |
|
||||||
<h4>Description</h4>
|
|
||||||
Get all orders from a user
|
|
||||||
|
|
||||||
<h4>Request</h4>
|
|
||||||
<code>GET /orders/:id</code>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Parameter</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>id</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>ID of the user in the database table</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h4>Example Response</h4>
|
|
||||||
|
|
||||||
```json
|
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"accountId": 3,
|
|
||||||
"totalPrice": 7.99,
|
|
||||||
"shippingProgress": 5,
|
|
||||||
"createdAt": "2024-09-09T12:24:24.225Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.120Z",
|
|
||||||
"orderItem": [
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"orderId": 1,
|
|
||||||
"quantity": 1,
|
|
||||||
"productId": 6,
|
|
||||||
"createdAt": "2024-09-13T07:51:40.120Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.120Z",
|
|
||||||
"product": {
|
|
||||||
"id": 6,
|
|
||||||
"brand": "Aldous Huxley",
|
|
||||||
"name": "Brave New World",
|
|
||||||
"categoryId": 3,
|
|
||||||
"price": 7.99,
|
|
||||||
"discount": 0,
|
|
||||||
"rating": 4.4,
|
|
||||||
"imageUrl": "brave-new-world.jpg",
|
|
||||||
"description": "Brave New World beschreibt eine genormte Gesellschaft, in der Föten genetisch manipuliert und Menschen konditioniert werden. Ziel des Staates ist Zufriedenheit und Stabilität, und dies wird durch Gleichheit, Drogen und Propaganda erreicht. Gott und Religion...",
|
|
||||||
"createdAt": "2024-09-13T07:51:40.119Z",
|
|
||||||
"updatedAt": "2024-09-13T07:51:40.119Z"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
```
|
|
||||||
</div>
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #69CA92; margin-bottom: 20px">
|
|
||||||
<summary style="background-color: #69CA92; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Place a new order</summary>
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
|
||||||
Place a new order to the database
|
|
||||||
|
|
||||||
<h4>Request</h4>
|
|
||||||
<code>POST /orders</code>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Query Parameters</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>accountId</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>ID of account who created this order</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>shippingProgress</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Progress of shipping, 1 to 5</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>orderItem</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>List of ordered items (objects). Needs parameter <code>quantity</code> and <code>productId</code></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
#### `/accounts`
|
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #70AFFD; margin-bottom: 20px">
|
|
||||||
<summary style="background-color: #70AFFD; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Login user</summary>
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
|
||||||
Login process for user
|
|
||||||
|
|
||||||
<h4>Request</h4>
|
|
||||||
<code>GET /accounts</code>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Query Parameters</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>username</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Name of user account</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>password</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Password of user account</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<h4>Example Response</h4>
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"loginSuccessful": true,
|
|
||||||
"userId": 3,
|
|
||||||
"message": ""
|
|
||||||
}
|
|
||||||
```
|
|
||||||
</div>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #69CA92; margin-bottom: 20px">
|
|
||||||
<summary style="background-color: #69CA92; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Add an user</summary>
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
|
||||||
Place a new account to the database
|
|
||||||
|
|
||||||
<h4>Request</h4>
|
|
||||||
<code>POST /accounts</code>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Body Parameters</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>username</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Login username</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>password</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Login password</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>firstName</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>First name of user</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>lastName</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Last name of user</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>street</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Street where the user lives</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>houseNumber</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>House number of user</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>postalCode</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Postal code of users home</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>city</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Name of users city</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details style="border: solid; border-radius: 10px; border-color: #F3A63D; margin-bottom: 20px">
|
|
||||||
<summary style="background-color: #F3A63D; color: #FFFFFF; border: none; padding: 10px 20px; border-radius: 6px 6px 0px 0px; font-weight: bold">Update account</summary>
|
|
||||||
<div style="padding: 0px 20px 10px">
|
|
||||||
|
|
||||||
<h4>Description</h4>
|
|
||||||
Updating values of an existing account
|
|
||||||
|
|
||||||
<h4>Request</h4>
|
|
||||||
<code>PATCH /account</code>
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<table>
|
|
||||||
<header>
|
|
||||||
<th>Body Parameters</th>
|
|
||||||
<th>Required?</th>
|
|
||||||
<th>Description</th>
|
|
||||||
</header>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td><code>id</code></td>
|
|
||||||
<td>Yes</td>
|
|
||||||
<td>Identifier of dataset</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>username</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Login username</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>password</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Login password</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>firstName</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>First name of user</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>lastName</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Last name of user</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>street</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Street where the user lives</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>houseNumber</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>House number of user</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>postalCode</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Postal code of users home</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><code>city</code></td>
|
|
||||||
<td>No</td>
|
|
||||||
<td>Name of users city</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</details>
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,232 +1,376 @@
|
|||||||
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8">
|
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8">
|
||||||
<diagram name="Page-1" id="WevClHWmhzPAQ7FDN5po">
|
<diagram name="Page-1" id="WevClHWmhzPAQ7FDN5po">
|
||||||
<mxGraphModel dx="819" dy="473" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
<mxGraphModel dx="1988" dy="473" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
||||||
<root>
|
<root>
|
||||||
<mxCell id="0" />
|
<mxCell id="0" />
|
||||||
<mxCell id="1" parent="0" />
|
<mxCell id="1" parent="0" />
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="330" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="310" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-5" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Products</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-5" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Products</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="300" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="280" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-21" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-21" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="420" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="399" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-22" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">price: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-22" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">price: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="540" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="460" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-23" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>categoryId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-23" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>categoryId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="510" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="340" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-24" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">discount: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-24" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">discount: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="570" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="490" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-2" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Accounts</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-2" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Accounts</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="300" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="320" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-3" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-3" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="330" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="350" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">username: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">username: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="360" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="380" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-5" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">password: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-5" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">password: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="390" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="410" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-6" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>OrderItems</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-6" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>OrderItems</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#a20025;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="240" width="160" height="30" as="geometry" />
|
<mxGeometry x="-439.99999999999994" y="360" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-7" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-7" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="270" width="160" height="30" as="geometry" />
|
<mxGeometry x="-439.99999999999994" y="390" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-8" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>usernameId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-8" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>accountId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="689.9100000000001" y="330" width="160" height="30" as="geometry" />
|
<mxGeometry x="-680" y="420" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-9" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">totalPrice: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-17" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Categories</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="689.9100000000001" y="360" width="160" height="30" as="geometry" />
|
<mxGeometry x="39.960000000000036" y="310" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-17" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Categories</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="419.91" y="480" width="160" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-18" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-18" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="510" width="160" height="30" as="geometry" />
|
<mxGeometry x="39.960000000000036" y="340" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-19" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-19" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="540" width="160" height="30" as="geometry" />
|
<mxGeometry x="39.960000000000036" y="370" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-20" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="-XxvrMC6G6SQ8Xm1xsTM-23" target="xvubMpEdOjOFzFZ-NZdf-18" edge="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-20" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=-0.019;entryY=0.493;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="-XxvrMC6G6SQ8Xm1xsTM-23" target="xvubMpEdOjOFzFZ-NZdf-18" edge="1">
|
||||||
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
<mxPoint x="450.04" y="519.9999999999998" as="sourcePoint" />
|
<mxPoint x="120" y="469.9999999999998" as="sourcePoint" />
|
||||||
<mxPoint x="330.04" y="639.9999999999998" as="targetPoint" />
|
<mxPoint y="589.9999999999998" as="targetPoint" />
|
||||||
<Array as="points" />
|
<Array as="points" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-21" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-20" connectable="0" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-21" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-20" connectable="0" vertex="1">
|
||||||
<mxGeometry x="-1" relative="1" as="geometry">
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
<mxPoint x="-30" y="-35" as="offset" />
|
<mxPoint x="4" y="-29" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-22" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-20" connectable="0" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-22" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-20" connectable="0" vertex="1">
|
||||||
<mxGeometry x="1" relative="1" as="geometry">
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
<mxPoint x="-10" y="-25" as="offset" />
|
<mxPoint x="-7" y="-31" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-23" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>productId:&nbsp;</i><i style="background-color: initial;">Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-23" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>productId:&nbsp;</i><i style="background-color: initial;">Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="330" width="160" height="30" as="geometry" />
|
<mxGeometry x="-439.99999999999994" y="450" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-24" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="xvubMpEdOjOFzFZ-NZdf-8" target="xvubMpEdOjOFzFZ-NZdf-3" edge="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-24" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="xvubMpEdOjOFzFZ-NZdf-23" target="-XxvrMC6G6SQ8Xm1xsTM-4" edge="1">
|
||||||
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
<mxPoint x="828.9100000000001" y="489.9999999999998" as="sourcePoint" />
|
<mxPoint x="-240" y="290" as="sourcePoint" />
|
||||||
<mxPoint x="708.9100000000001" y="609.9999999999998" as="targetPoint" />
|
<mxPoint x="-280.0000000000001" y="605" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-25" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-24" connectable="0" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-25" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-24" connectable="0" vertex="1">
|
||||||
<mxGeometry x="-1" relative="1" as="geometry">
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
<mxPoint y="-25" as="offset" />
|
<mxPoint x="10" y="-25" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-26" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-24" connectable="0" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-26" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-24" connectable="0" vertex="1">
|
||||||
<mxGeometry x="1" relative="1" as="geometry">
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
<mxPoint x="-9" y="-35" as="offset" />
|
<mxPoint x="-9" y="-25" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-27" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="xvubMpEdOjOFzFZ-NZdf-23" target="-XxvrMC6G6SQ8Xm1xsTM-4" edge="1">
|
|
||||||
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
|
||||||
<mxPoint x="309.91" y="414.44" as="sourcePoint" />
|
|
||||||
<mxPoint x="438.91" y="414.44" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-28" value="1" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-27" connectable="0" vertex="1">
|
|
||||||
<mxGeometry x="-1" relative="1" as="geometry">
|
|
||||||
<mxPoint x="-20" y="-25" as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-29" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-27" connectable="0" vertex="1">
|
|
||||||
<mxGeometry x="1" relative="1" as="geometry">
|
|
||||||
<mxPoint x="20" y="-25" as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-36" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">street: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="949.9100000000001" y="480" width="160" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-37" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">firstName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-37" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">firstName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="420" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="440" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-38" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">lastName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-38" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">lastName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="450" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="470" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-40" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Orders</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-40" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Orders</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#a20025;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="689.9100000000001" y="270" width="160" height="30" as="geometry" />
|
<mxGeometry x="-680" y="360" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-41" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>orderId: Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-41" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>orderId: Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="689.9100000000001" y="300" width="160" height="30" as="geometry" />
|
<mxGeometry x="-680" y="390" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-42" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>orderId:&nbsp;</i><i style="background-color: initial;">Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-42" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>orderId:&nbsp;</i><i style="background-color: initial;">Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="300" width="160" height="30" as="geometry" />
|
<mxGeometry x="-439.99999999999994" y="420" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-43" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="xvubMpEdOjOFzFZ-NZdf-42" target="xvubMpEdOjOFzFZ-NZdf-41" edge="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-47" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">quantity: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-439.99999999999994" y="480" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-1" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">icon: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="39.960000000000036" y="400" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-2" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>brandId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-200" y="370" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">rating: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-200" y="520" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-6" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">description: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-200.00000000000003" y="430" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-7" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">shippingProgress: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-680" y="480" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-11" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-779.9100000000001" y="355" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-12" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-539.9100000000001" y="395" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-13" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-299.90999999999997" y="395" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-14" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-60.04000000000002" y="315" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-15" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="179.92000000000002" y="345" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-16" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-785.2" y="385" width="20" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-17" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="174.63000000000005" y="375" width="20" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-18" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-674.71" y="565" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-19" value="Primary Key" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-654.8" y="560" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-20" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-680" y="635" width="20" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-21" value="Unique" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-654.8000000000001" y="630" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-24" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-299.90999999999997" y="425" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-25" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-299.90999999999997" y="455" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-26" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-539.9100000000001" y="425" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-27" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-60.04000000000002" y="375" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-28" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-674.71" y="600" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-29" value="Foreign Key" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-654.8" y="595" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-1" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">bankName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="540" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-2" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">iban: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="570" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-3" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">orderedAt: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-680" y="450" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-4" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Brands</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="39.960000000000036" y="470" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-5" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="39.960000000000036" y="500" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-6" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="39.960000000000036" y="530" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-7" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="180.24999999999994" y="505" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-8" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="174.95999999999998" y="535" width="20" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-9" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="Mm1_BtgNgvV1z5cDQ8i7-2" target="_UF3kFiP3G3Olu9frHUj-5">
|
||||||
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
<mxPoint x="629.9100000000001" y="390" as="sourcePoint" />
|
<mxPoint x="-445.04" y="510" as="sourcePoint" />
|
||||||
<mxPoint x="729.9100000000001" y="390" as="targetPoint" />
|
<mxPoint x="-315.04" y="510" as="targetPoint" />
|
||||||
|
<Array as="points" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-44" value="1..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-43" connectable="0" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-10" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-9">
|
||||||
<mxGeometry x="-1" relative="1" as="geometry">
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
<mxPoint x="5" y="-25" as="offset" />
|
<mxPoint x="3" y="-28" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-45" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-43" connectable="0" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-11" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-9">
|
||||||
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-4" y="-30" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-12" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">images: Array&lt;String&gt;</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-200" y="610" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-13" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">specs: Array&lt;String&gt;</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-200" y="580" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-14" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">inStock: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-200" y="550" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-16" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Addresses</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="200" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-17" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">street: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="290" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-18" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">houseNumber: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="320" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-19" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">postalCode: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="350" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-20" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">city: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="380" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-21" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="230" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-25" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>accountId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="260" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-26" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1017" y="234" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-27" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Payments</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="450" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-28" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="480" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-29" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>accountId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="510" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-33" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1017" y="485" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-36" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1017" y="265" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-37" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1017" y="515" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-38" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">accountRoleId: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-920" y="500" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-39" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>AccountRoles</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="640" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-40" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="700" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-41" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="670" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-44" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-779.9100000000001" y="505" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-49" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">orderPrice: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-439.99999999999994" y="510" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-52" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="_UF3kFiP3G3Olu9frHUj-25" target="xvubMpEdOjOFzFZ-NZdf-3">
|
||||||
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-890.0000000000001" y="179.99999999999994" as="sourcePoint" />
|
||||||
|
<mxPoint x="-790.0000000000001" y="179.99999999999994" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-53" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-52">
|
||||||
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="10" y="-25" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-54" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-52">
|
||||||
<mxGeometry x="1" relative="1" as="geometry">
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
<mxPoint x="-9" y="-25" as="offset" />
|
<mxPoint x="-9" y="-25" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-47" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">quantity: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-55" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="_UF3kFiP3G3Olu9frHUj-29" target="xvubMpEdOjOFzFZ-NZdf-3">
|
||||||
<mxGeometry x="419.91" y="360" width="160" height="30" as="geometry" />
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-950.0000000000001" y="674.55" as="sourcePoint" />
|
||||||
|
<mxPoint x="-850.0000000000001" y="674.55" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-1" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">icon: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-56" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-55">
|
||||||
<mxGeometry x="419.91" y="570" width="160" height="30" as="geometry" />
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="10" y="-25" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-2" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">creator: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-57" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-55">
|
||||||
<mxGeometry x="130.04000000000002" y="360" width="160" height="30" as="geometry" />
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-9" y="-25" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-3" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">distributor: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-58" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
|
||||||
<mxGeometry x="130.04" y="390" width="160" height="30" as="geometry" />
|
<mxGeometry x="-1017" y="675" width="9.43" height="20" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">rating: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-59" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="_UF3kFiP3G3Olu9frHUj-38" target="_UF3kFiP3G3Olu9frHUj-41">
|
||||||
<mxGeometry x="130.04000000000002" y="600" width="160" height="30" as="geometry" />
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-940.0000000000001" y="650" as="sourcePoint" />
|
||||||
|
<mxPoint x="-840.0000000000001" y="650" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="-950" y="515" />
|
||||||
|
<mxPoint x="-950" y="685" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-5" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">imageUrl: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-60" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-59">
|
||||||
<mxGeometry x="130.04" y="480" width="160" height="30" as="geometry" />
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-24" y="-28" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-6" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">description: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-61" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-59">
|
||||||
<mxGeometry x="130.04" y="450" width="160" height="30" as="geometry" />
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="15" y="-29" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-7" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">shippingProgress: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-62" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="xvubMpEdOjOFzFZ-NZdf-8" target="xvubMpEdOjOFzFZ-NZdf-3">
|
||||||
<mxGeometry x="689.9100000000001" y="390" width="160" height="30" as="geometry" />
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-779.9100000000001" y="604.4399999999999" as="sourcePoint" />
|
||||||
|
<mxPoint x="-679.9100000000001" y="604.4399999999999" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-8" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">houseNumber: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-63" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-62">
|
||||||
<mxGeometry x="949.91" y="510" width="160" height="30" as="geometry" />
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-22" y="-27" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-9" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">postalCode: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-64" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-62">
|
||||||
<mxGeometry x="949.91" y="540" width="160" height="30" as="geometry" />
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="13" y="-32" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-10" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">city: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-65" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="xvubMpEdOjOFzFZ-NZdf-42" target="xvubMpEdOjOFzFZ-NZdf-41">
|
||||||
<mxGeometry x="949.9100000000001" y="570" width="160" height="30" as="geometry" />
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-620.0000000000001" y="594.64" as="sourcePoint" />
|
||||||
|
<mxPoint x="-520.0000000000001" y="594.64" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-11" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-66" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-65">
|
||||||
<mxGeometry x="1090" y="335" width="9.43" height="20" as="geometry" />
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-22" y="-28" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-12" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-67" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-65">
|
||||||
<mxGeometry x="830" y="305" width="9.43" height="20" as="geometry" />
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="14" y="-29" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-13" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-68" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
|
||||||
<mxGeometry x="560" y="275" width="9.43" height="20" as="geometry" />
|
<mxGeometry x="-60.04000000000002" y="345" width="9.43" height="20" as="geometry" />
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-14" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="270" y="335" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-15" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="559.87" y="515" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-16" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="1084.71" y="365" width="20" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-17" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="554.58" y="545" width="20" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-18" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="720" y="475" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-19" value="Primary Key" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="739.9100000000001" y="470" width="110" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-20" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="714.71" y="545" width="20" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-21" value="Unique" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="739.91" y="540" width="110" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-24" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="560" y="305" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-25" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="560" y="335" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-26" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="830" y="335" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-27" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="270" y="515" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-28" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="720" y="510" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-29" value="Foreign Key" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="739.9100000000001" y="505" width="110" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="sa5D8W8LL20ZiN9_dg2E-1" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="1">
|
|
||||||
<mxGeometry x="309.99999999999994" y="500" as="geometry" />
|
|
||||||
</mxCell>
|
</mxCell>
|
||||||
</root>
|
</root>
|
||||||
</mxGraphModel>
|
</mxGraphModel>
|
||||||
|
|||||||
@@ -1,84 +1,81 @@
|
|||||||
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8">
|
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8">
|
||||||
<diagram name="Page-1" id="WevClHWmhzPAQ7FDN5po">
|
<diagram name="Page-1" id="WevClHWmhzPAQ7FDN5po">
|
||||||
<mxGraphModel dx="819" dy="473" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
<mxGraphModel dx="1988" dy="473" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
|
||||||
<root>
|
<root>
|
||||||
<mxCell id="0" />
|
<mxCell id="0" />
|
||||||
<mxCell id="1" parent="0" />
|
<mxCell id="1" parent="0" />
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="330" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="310" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-5" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Products</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-5" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Products</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="300" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="280" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-21" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-21" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="420" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="399" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-22" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">price: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-22" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">price: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="540" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="460" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-23" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>categoryId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-23" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>categoryId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="510" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="340" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-24" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">discount: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="-XxvrMC6G6SQ8Xm1xsTM-24" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">discount: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="130.04000000000002" y="570" width="160" height="30" as="geometry" />
|
<mxGeometry x="-200" y="490" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-2" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Accounts</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-2" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Accounts</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="300" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="320" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-3" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-3" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="330" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="350" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">username: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">username: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="360" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="380" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-5" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">password: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-5" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">password: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="390" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="410" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-6" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>OrderItems</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-6" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>OrderItems</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#a20025;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="240" width="160" height="30" as="geometry" />
|
<mxGeometry x="-439.99999999999994" y="360" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-7" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-7" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="270" width="160" height="30" as="geometry" />
|
<mxGeometry x="-439.99999999999994" y="390" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-8" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>usernameId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-8" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>accountId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="689.9100000000001" y="330" width="160" height="30" as="geometry" />
|
<mxGeometry x="-680" y="420" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-9" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">totalPrice: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-17" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Categories</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="689.9100000000001" y="360" width="160" height="30" as="geometry" />
|
<mxGeometry x="39.960000000000036" y="310" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-17" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Categories</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="419.91" y="480" width="160" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-18" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-18" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="510" width="160" height="30" as="geometry" />
|
<mxGeometry x="39.960000000000036" y="340" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-19" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-19" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="540" width="160" height="30" as="geometry" />
|
<mxGeometry x="39.960000000000036" y="370" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-20" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="-XxvrMC6G6SQ8Xm1xsTM-23" target="xvubMpEdOjOFzFZ-NZdf-18" edge="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-20" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=-0.019;entryY=0.493;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryPerimeter=0;" parent="1" source="-XxvrMC6G6SQ8Xm1xsTM-23" target="xvubMpEdOjOFzFZ-NZdf-18" edge="1">
|
||||||
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
<mxPoint x="450.04" y="519.9999999999998" as="sourcePoint" />
|
<mxPoint x="120" y="469.9999999999998" as="sourcePoint" />
|
||||||
<mxPoint x="330.04" y="639.9999999999998" as="targetPoint" />
|
<mxPoint y="589.9999999999998" as="targetPoint" />
|
||||||
<Array as="points" />
|
<Array as="points" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-21" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-20" connectable="0" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-21" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-20" connectable="0" vertex="1">
|
||||||
<mxGeometry x="-1" relative="1" as="geometry">
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
<mxPoint x="-30" y="-35" as="offset" />
|
<mxPoint x="4" y="-29" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-22" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-20" connectable="0" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-22" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-20" connectable="0" vertex="1">
|
||||||
<mxGeometry x="1" relative="1" as="geometry">
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
<mxPoint x="-10" y="-25" as="offset" />
|
<mxPoint x="-7" y="-31" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-23" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>productId:&nbsp;</i><i style="background-color: initial;">Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-23" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>productId:&nbsp;</i><i style="background-color: initial;">Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="330" width="160" height="30" as="geometry" />
|
<mxGeometry x="-439.99999999999994" y="450" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-24" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="xvubMpEdOjOFzFZ-NZdf-8" target="xvubMpEdOjOFzFZ-NZdf-3" edge="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-24" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="xvubMpEdOjOFzFZ-NZdf-23" target="-XxvrMC6G6SQ8Xm1xsTM-4" edge="1">
|
||||||
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
<mxPoint x="828.9100000000001" y="489.9999999999998" as="sourcePoint" />
|
<mxPoint x="-240" y="290" as="sourcePoint" />
|
||||||
<mxPoint x="708.9100000000001" y="609.9999999999998" as="targetPoint" />
|
<mxPoint x="-280.0000000000001" y="605" as="targetPoint" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-25" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-24" connectable="0" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-25" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-24" connectable="0" vertex="1">
|
||||||
@@ -91,142 +88,289 @@
|
|||||||
<mxPoint x="-9" y="-25" as="offset" />
|
<mxPoint x="-9" y="-25" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-27" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="xvubMpEdOjOFzFZ-NZdf-23" target="-XxvrMC6G6SQ8Xm1xsTM-4" edge="1">
|
|
||||||
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
|
||||||
<mxPoint x="309.91" y="414.44" as="sourcePoint" />
|
|
||||||
<mxPoint x="438.91" y="414.44" as="targetPoint" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-28" value="1" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-27" connectable="0" vertex="1">
|
|
||||||
<mxGeometry x="-1" relative="1" as="geometry">
|
|
||||||
<mxPoint x="-20" y="-25" as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-29" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-27" connectable="0" vertex="1">
|
|
||||||
<mxGeometry x="1" relative="1" as="geometry">
|
|
||||||
<mxPoint x="20" y="-25" as="offset" />
|
|
||||||
</mxGeometry>
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-36" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">street: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="949.9100000000001" y="480" width="160" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-37" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">firstName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-37" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">firstName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="420" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="440" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-38" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">lastName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-38" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">lastName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="949.9100000000001" y="450" width="160" height="30" as="geometry" />
|
<mxGeometry x="-920" y="470" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-40" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Orders</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#cce5ff;strokeColor=#36393d;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-40" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Orders</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#a20025;strokeColor=default;fontColor=#ffffff;" parent="1" vertex="1">
|
||||||
<mxGeometry x="689.9100000000001" y="270" width="160" height="30" as="geometry" />
|
<mxGeometry x="-680" y="360" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-41" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>orderId: Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-41" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id: Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="689.9100000000001" y="300" width="160" height="30" as="geometry" />
|
<mxGeometry x="-680" y="390" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-42" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>orderId:&nbsp;</i><i style="background-color: initial;">Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-42" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>orderId:&nbsp;</i><i style="background-color: initial;">Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
<mxGeometry x="419.91" y="300" width="160" height="30" as="geometry" />
|
<mxGeometry x="-439.99999999999994" y="420" width="160" height="30" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-43" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="xvubMpEdOjOFzFZ-NZdf-42" target="xvubMpEdOjOFzFZ-NZdf-41" edge="1">
|
<mxCell id="xvubMpEdOjOFzFZ-NZdf-47" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">quantity: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-439.99999999999994" y="480" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-1" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">icon: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="39.960000000000036" y="400" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-2" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>brandId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-200" y="370" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">rating: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-200" y="520" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-6" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">description: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-200.00000000000003" y="430" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-7" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">shippingProgress: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-680" y="480" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-11" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-779.9100000000001" y="355" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-12" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-539.9100000000001" y="395" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-13" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-299.90999999999997" y="395" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-14" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-60.04000000000002" y="315" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-15" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="179.92000000000002" y="345" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-16" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-785.2" y="385" width="20" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-17" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="174.63000000000005" y="375" width="20" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-18" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-674.71" y="565" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-19" value="Primary Key" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-654.8" y="560" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-20" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-680" y="635" width="20" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-21" value="Unique" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-654.8000000000001" y="630" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-24" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-299.90999999999997" y="425" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-25" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-299.90999999999997" y="455" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-26" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-539.9100000000001" y="425" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-27" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-60.04000000000002" y="375" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-28" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-674.71" y="600" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-29" value="Foreign Key" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="-654.8" y="595" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-1" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">bankName: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="540" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-2" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">iban: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="570" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-3" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">orderedAt: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-680" y="450" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-4" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Brands</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#008a00;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="39.960000000000036" y="470" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-5" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="39.960000000000036" y="500" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-6" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="39.960000000000036" y="530" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-7" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="180.24999999999994" y="505" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-8" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="174.95999999999998" y="535" width="20" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-9" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="Mm1_BtgNgvV1z5cDQ8i7-2" target="_UF3kFiP3G3Olu9frHUj-5">
|
||||||
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
<mxPoint x="629.9100000000001" y="390" as="sourcePoint" />
|
<mxPoint x="-445.04" y="510" as="sourcePoint" />
|
||||||
<mxPoint x="729.9100000000001" y="390" as="targetPoint" />
|
<mxPoint x="-315.04" y="510" as="targetPoint" />
|
||||||
|
<Array as="points" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-44" value="1..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-43" connectable="0" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-10" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-9">
|
||||||
<mxGeometry x="-1" relative="1" as="geometry">
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
<mxPoint x="5" y="-25" as="offset" />
|
<mxPoint x="3" y="-28" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-45" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" parent="xvubMpEdOjOFzFZ-NZdf-43" connectable="0" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-11" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-9">
|
||||||
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-4" y="-30" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-12" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">images: Array&lt;String&gt;</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-200" y="610" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-13" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">specs: Array&lt;String&gt;</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-200" y="580" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-14" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">inStock: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-200" y="550" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-16" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Addresses</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="200" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-17" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">street: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="290" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-18" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">houseNumber: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="320" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-19" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">postalCode: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="350" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-20" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">city: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="380" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-21" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="230" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-25" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>accountId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="260" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-26" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1017" y="234" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-27" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>Payments</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="450" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-28" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="480" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-29" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><i>accountId: Number</i></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="510" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-33" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1017" y="485" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-36" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1017" y="265" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-37" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1017" y="515" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-38" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">accountRoleId: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-920" y="500" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-39" value="<blockquote style="margin: 0px; border: none; padding: 0px;"><b><u>AccountRoles</u></b></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=center;fillColor=#1ba1e2;strokeColor=default;fontColor=#ffffff;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="640" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-40" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">name: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="700" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-41" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;"><u>id:&nbsp;</u><u style="background-color: initial;">Number</u></blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-1160" y="670" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-44" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-779.9100000000001" y="505" width="9.43" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-49" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">orderPrice: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="-439.99999999999994" y="510" width="160" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-52" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="_UF3kFiP3G3Olu9frHUj-25" target="xvubMpEdOjOFzFZ-NZdf-3">
|
||||||
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-890.0000000000001" y="179.99999999999994" as="sourcePoint" />
|
||||||
|
<mxPoint x="-790.0000000000001" y="179.99999999999994" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-53" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-52">
|
||||||
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="10" y="-25" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-54" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-52">
|
||||||
<mxGeometry x="1" relative="1" as="geometry">
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
<mxPoint x="-9" y="-25" as="offset" />
|
<mxPoint x="-9" y="-25" as="offset" />
|
||||||
</mxGeometry>
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="xvubMpEdOjOFzFZ-NZdf-47" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">quantity: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-55" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="_UF3kFiP3G3Olu9frHUj-29" target="xvubMpEdOjOFzFZ-NZdf-3">
|
||||||
<mxGeometry x="419.91" y="360" width="160" height="30" as="geometry" />
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-950.0000000000001" y="674.55" as="sourcePoint" />
|
||||||
|
<mxPoint x="-850.0000000000001" y="674.55" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-1" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">icon: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-56" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-55">
|
||||||
<mxGeometry x="419.91" y="570" width="160" height="30" as="geometry" />
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="10" y="-25" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-2" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">creator: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-57" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-55">
|
||||||
<mxGeometry x="130.04000000000002" y="360" width="160" height="30" as="geometry" />
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-9" y="-25" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-3" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">distributor: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-58" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" vertex="1" parent="1">
|
||||||
<mxGeometry x="130.04" y="390" width="160" height="30" as="geometry" />
|
<mxGeometry x="-1017" y="675" width="9.43" height="20" as="geometry" />
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-4" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">rating: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-59" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="_UF3kFiP3G3Olu9frHUj-38" target="_UF3kFiP3G3Olu9frHUj-41">
|
||||||
<mxGeometry x="130.04000000000002" y="600" width="160" height="30" as="geometry" />
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-940.0000000000001" y="650" as="sourcePoint" />
|
||||||
|
<mxPoint x="-840.0000000000001" y="650" as="targetPoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="-950" y="515" />
|
||||||
|
<mxPoint x="-950" y="685" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-5" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">imageUrl: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-60" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-59">
|
||||||
<mxGeometry x="130.04" y="480" width="160" height="30" as="geometry" />
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-24" y="-28" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-6" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">description: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-61" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-59">
|
||||||
<mxGeometry x="130.04" y="450" width="160" height="30" as="geometry" />
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="15" y="-29" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-7" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">shippingProgress: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-62" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="xvubMpEdOjOFzFZ-NZdf-8" target="xvubMpEdOjOFzFZ-NZdf-3">
|
||||||
<mxGeometry x="689.9100000000001" y="390" width="160" height="30" as="geometry" />
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-779.9100000000001" y="604.4399999999999" as="sourcePoint" />
|
||||||
|
<mxPoint x="-679.9100000000001" y="604.4399999999999" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-8" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">houseNumber: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-63" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-62">
|
||||||
<mxGeometry x="949.91" y="510" width="160" height="30" as="geometry" />
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-22" y="-27" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-9" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">postalCode: Number</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-64" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-62">
|
||||||
<mxGeometry x="949.91" y="540" width="160" height="30" as="geometry" />
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="13" y="-32" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-10" value="<blockquote style="margin: 0px 0px 0px 8px; border: none; padding: 0px;">city: String</blockquote>" style="rounded=0;whiteSpace=wrap;html=1;align=left;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-65" value="" style="endArrow=open;endSize=12;startArrow=diamondThin;startSize=14;startFill=0;edgeStyle=orthogonalEdgeStyle;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="xvubMpEdOjOFzFZ-NZdf-42" target="xvubMpEdOjOFzFZ-NZdf-41">
|
||||||
<mxGeometry x="949.9100000000001" y="570" width="160" height="30" as="geometry" />
|
<mxGeometry x="389.35999999999996" y="350" as="geometry">
|
||||||
|
<mxPoint x="-620.0000000000001" y="594.64" as="sourcePoint" />
|
||||||
|
<mxPoint x="-520.0000000000001" y="594.64" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-11" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-66" value="0..n" style="resizable=0;align=left;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-65">
|
||||||
<mxGeometry x="1090" y="335" width="9.43" height="20" as="geometry" />
|
<mxGeometry x="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-22" y="-28" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-12" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-67" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="_UF3kFiP3G3Olu9frHUj-65">
|
||||||
<mxGeometry x="830" y="305" width="9.43" height="20" as="geometry" />
|
<mxGeometry x="1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="14" y="-29" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
</mxCell>
|
</mxCell>
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-13" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
<mxCell id="_UF3kFiP3G3Olu9frHUj-68" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" vertex="1" parent="1">
|
||||||
<mxGeometry x="560" y="275" width="9.43" height="20" as="geometry" />
|
<mxGeometry x="-60.04000000000002" y="345" width="9.43" height="20" as="geometry" />
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-14" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="270" y="335" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-15" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="559.87" y="515" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-16" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="1084.71" y="365" width="20" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-17" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="554.58" y="545" width="20" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-18" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#2072B8;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="720" y="475" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-19" value="Primary Key" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="739.9100000000001" y="470" width="110" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-20" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;rotation=0;gradientColor=#223548;strokeColor=none;gradientDirection=east;fillColor=#5b738b;rounded=0;pointerEvents=0;fontFamily=Helvetica;fontSize=16;fontColor=#FFFFFF;spacingTop=4;spacingBottom=4;spacingLeft=4;spacingRight=4;points=[];fontStyle=1" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="714.71" y="545" width="20" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-21" value="Unique" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="739.91" y="540" width="110" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-24" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="560" y="305" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-25" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="560" y="335" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-26" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="830" y="335" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-27" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="270" y="515" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-28" value="" style="sketch=0;pointerEvents=1;shadow=0;dashed=0;html=1;strokeColor=none;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;outlineConnect=0;align=center;shape=mxgraph.office.security.key_permissions;fillColor=#CCCCCC;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="720" y="510" width="9.43" height="20" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="Mm1_BtgNgvV1z5cDQ8i7-29" value="Foreign Key" style="text;strokeColor=none;align=left;fillColor=none;html=1;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1">
|
|
||||||
<mxGeometry x="739.9100000000001" y="505" width="110" height="30" as="geometry" />
|
|
||||||
</mxCell>
|
|
||||||
<mxCell id="sa5D8W8LL20ZiN9_dg2E-1" value="1" style="resizable=0;align=right;verticalAlign=top;labelBackgroundColor=#ffffff;fontSize=10;strokeColor=#003366;shadow=1;fillColor=#D4E1F5;fontColor=#003366" connectable="0" vertex="1" parent="1">
|
|
||||||
<mxGeometry x="309.99999999999994" y="500" as="geometry" />
|
|
||||||
</mxCell>
|
</mxCell>
|
||||||
</root>
|
</root>
|
||||||
</mxGraphModel>
|
</mxGraphModel>
|
||||||
|
|||||||
16
software/backend/data/accountRoles.json
Normal file
16
software/backend/data/accountRoles.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"id": 0,
|
||||||
|
"name": "User",
|
||||||
|
"privilegeBuy": true,
|
||||||
|
"privilegeAdminPanel": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Admin",
|
||||||
|
"privilegeBuy": true,
|
||||||
|
"privilegeAdminPanel": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -4,92 +4,183 @@
|
|||||||
"id": 0,
|
"id": 0,
|
||||||
"username": "hagemeister93",
|
"username": "hagemeister93",
|
||||||
"password": "Xjt3qb5t",
|
"password": "Xjt3qb5t",
|
||||||
"street": "Laportestraße",
|
|
||||||
"houseNumber": 22,
|
|
||||||
"postalCode": 30449,
|
|
||||||
"city": "Hannover",
|
|
||||||
"firstName": "Laurin",
|
"firstName": "Laurin",
|
||||||
"lastName": "Hagemeister",
|
"lastName": "Hagemeister",
|
||||||
"bankName": "Deutsche Bank",
|
"addresses": [
|
||||||
"iban": "DE92500105175721645777"
|
{
|
||||||
|
"accountId": 0,
|
||||||
|
"street": "Laportestraße",
|
||||||
|
"houseNumber": 22,
|
||||||
|
"postalCode": 30449,
|
||||||
|
"city": "Hannover"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payments": [
|
||||||
|
{
|
||||||
|
"accountId": 0,
|
||||||
|
"bankName": "Deutsche Bank",
|
||||||
|
"iban": "DE92500105175721645777"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountRoleId": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"username": "katjaStoiber",
|
"username": "katjaStoiber",
|
||||||
"password": "target123",
|
"password": "target123",
|
||||||
"street": "Gustav-Adolf-Straße",
|
|
||||||
"houseNumber": 30,
|
|
||||||
"postalCode": 30167,
|
|
||||||
"city": "Hannover",
|
|
||||||
"firstName": "Katja",
|
"firstName": "Katja",
|
||||||
"lastName": "Stoiber",
|
"lastName": "Stoiber",
|
||||||
"bankName": "DZ Bank",
|
"addresses": [
|
||||||
"iban": "DE12500105179557939114"
|
{
|
||||||
|
"accountId": 1,
|
||||||
|
"street": "Gustav-Adolf-Straße",
|
||||||
|
"houseNumber": 30,
|
||||||
|
"postalCode": 30167,
|
||||||
|
"city": "Hannover"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payments": [
|
||||||
|
{
|
||||||
|
"accountId": 1,
|
||||||
|
"bankName": "DZ Bank",
|
||||||
|
"iban": "DE12500105179557939114"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountRoleId": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"username": "oetkerohnek",
|
"username": "oetkerohnek",
|
||||||
"password": "iloveyou",
|
"password": "iloveyou",
|
||||||
"street": "Eckermannstraße",
|
|
||||||
"houseNumber": 1,
|
|
||||||
"postalCode": 30625,
|
|
||||||
"city": "Hannover",
|
|
||||||
"firstName": "Luna",
|
"firstName": "Luna",
|
||||||
"lastName": "Oeter",
|
"lastName": "Oeter",
|
||||||
"bankName": "Commerzbank",
|
"addresses": [
|
||||||
"iban": "DE31500105175417833272"
|
{
|
||||||
|
"accountId": 2,
|
||||||
|
"street": "Eckermannstraße",
|
||||||
|
"houseNumber": 1,
|
||||||
|
"postalCode": 30625,
|
||||||
|
"city": "Hannover"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"accountId": 2,
|
||||||
|
"street": "Gehrdener Straße",
|
||||||
|
"houseNumber": 14,
|
||||||
|
"postalCode": 30459,
|
||||||
|
"city": "Hannover"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payments": [
|
||||||
|
{
|
||||||
|
"accountId": 2,
|
||||||
|
"bankName": "Commerzbank",
|
||||||
|
"iban": "DE31500105175417833272"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountRoleId": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"username": "duranduran",
|
"username": "duranduran",
|
||||||
"password": "H4nn0ver",
|
"password": "H4nn0ver",
|
||||||
"street": "Schlägerstraße",
|
|
||||||
"houseNumber": 36,
|
|
||||||
"postalCode": 30171,
|
|
||||||
"city": "Hannover",
|
|
||||||
"firstName": "Jürgen",
|
"firstName": "Jürgen",
|
||||||
"lastName": "Durand",
|
"lastName": "Durand",
|
||||||
"bankName": "ING",
|
"addresses": [
|
||||||
"iban": "DE41500105172184936679"
|
{
|
||||||
|
"accountId": 3,
|
||||||
|
"street": "Schlägerstraße",
|
||||||
|
"houseNumber": 36,
|
||||||
|
"postalCode": 30171,
|
||||||
|
"city": "Hannover"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payments": [
|
||||||
|
{
|
||||||
|
"accountId": 3,
|
||||||
|
"bankName": "ING",
|
||||||
|
"iban": "DE41500105172184936679"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountRoleId": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"username": "guitarhero",
|
"username": "guitarhero",
|
||||||
"password": "gwerty123",
|
"password": "gwerty123",
|
||||||
"street": "Steinmetzstraße",
|
|
||||||
"houseNumber": 12,
|
|
||||||
"postalCode": 30163,
|
|
||||||
"city": "Hannover",
|
|
||||||
"firstName": "Frederik",
|
"firstName": "Frederik",
|
||||||
"lastName": "Furtwängler",
|
"lastName": "Furtwängler",
|
||||||
"bankName": "Sparkasse Hannover",
|
"addresses": [
|
||||||
"iban": "DE85500105172283979774"
|
{
|
||||||
|
"accountId": 4,
|
||||||
|
"street": "Steinmetzstraße",
|
||||||
|
"houseNumber": 12,
|
||||||
|
"postalCode": 30163,
|
||||||
|
"city": "Hannover"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payments": [
|
||||||
|
{
|
||||||
|
"accountId": 4,
|
||||||
|
"bankName": "Sparkasse Hannover",
|
||||||
|
"iban": "DE85500105172283979774"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountRoleId": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 5,
|
"id": 5,
|
||||||
"username": "herbstMareike",
|
"username": "herbstMareike",
|
||||||
"password": "qhsrbpgrs",
|
"password": "qhsrbpgrs",
|
||||||
"street": "Allerweg",
|
|
||||||
"houseNumber": 33,
|
|
||||||
"postalCode": 30851,
|
|
||||||
"city": "Langenhagen",
|
|
||||||
"firstName": "Mareike",
|
"firstName": "Mareike",
|
||||||
"lastName": "Herbst",
|
"lastName": "Herbst",
|
||||||
"bankName": "Postbank",
|
"addresses": [
|
||||||
"iban": "DE45500105178862417577"
|
{
|
||||||
|
"accountId": 5,
|
||||||
|
"street": "Allerweg",
|
||||||
|
"houseNumber": 33,
|
||||||
|
"postalCode": 30851,
|
||||||
|
"city": "Langenhagen"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payments": [
|
||||||
|
{
|
||||||
|
"accountId": 5,
|
||||||
|
"bankName": "Postbank",
|
||||||
|
"iban": "DE45500105178862417577"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountRoleId": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"username": "seibertmitb",
|
"username": "seibertmitb",
|
||||||
"password": "{jkz+WvQe",
|
"password": "{jkz+WvQe",
|
||||||
"street": "Marktstraße",
|
|
||||||
"houseNumber": 26,
|
|
||||||
"postalCode": 30880,
|
|
||||||
"city": "Laatzen",
|
|
||||||
"firstName": "Janna",
|
"firstName": "Janna",
|
||||||
"lastName": "Seibert",
|
"lastName": "Seibert",
|
||||||
"bankName": "Sparkasse Hannover",
|
"addresses": [
|
||||||
"iban": "DE51500105177526222196"
|
{
|
||||||
|
"accountId": 6,
|
||||||
|
"street": "Marktstraße",
|
||||||
|
"houseNumber": 26,
|
||||||
|
"postalCode": 30880,
|
||||||
|
"city": "Laatzen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"accountId": 6,
|
||||||
|
"street": "Kleiner Hillen",
|
||||||
|
"houseNumber": 24,
|
||||||
|
"postalCode": 30559,
|
||||||
|
"city": "Hannover"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"payments": [
|
||||||
|
{
|
||||||
|
"accountId": 6,
|
||||||
|
"bankName": "Sparkasse Hannover",
|
||||||
|
"iban": "DE51500105177526222196"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountRoleId": 0
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
40
software/backend/data/brands.json
Normal file
40
software/backend/data/brands.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"data": [
|
||||||
|
{
|
||||||
|
"id": 0,
|
||||||
|
"name": "Lenovo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"name": "Puma"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 2,
|
||||||
|
"name": "George Orwell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"name": "Aldous Huxley"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"name": "Dell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"name": "Fender"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"name": "ESP"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"name": "Pearl"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"name": "Apple"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -4,25 +4,29 @@
|
|||||||
"id": 0,
|
"id": 0,
|
||||||
"orderId": 0,
|
"orderId": 0,
|
||||||
"productId": 0,
|
"productId": 0,
|
||||||
"quantity": 2
|
"quantity": 2,
|
||||||
|
"orderPrice": 1769.99
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"orderId": 1,
|
"orderId": 1,
|
||||||
"productId": 6,
|
"productId": 6,
|
||||||
"quantity": 1
|
"quantity": 1,
|
||||||
|
"orderPrice": 899.99
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"orderId": 2,
|
"orderId": 2,
|
||||||
"productId": 3,
|
"productId": 3,
|
||||||
"quantity": 3
|
"quantity": 3,
|
||||||
|
"orderPrice": 9.99
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"orderId": 2,
|
"orderId": 2,
|
||||||
"productId": 2,
|
"productId": 2,
|
||||||
"quantity": 1
|
"quantity": 1,
|
||||||
|
"orderPrice": 14.99
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -3,22 +3,17 @@
|
|||||||
{
|
{
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"accountId": 0,
|
"accountId": 0,
|
||||||
"totalPrice": 0,
|
|
||||||
"shippingProgress": 4
|
"shippingProgress": 4
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"accountId": 3,
|
"accountId": 3,
|
||||||
"totalPrice": 7.99,
|
"shippingProgress": 5
|
||||||
"shippingProgress": 5,
|
|
||||||
"createdAt": "2024-09-09 12:24:24.225 +00:00"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"accountId": 3,
|
"accountId": 3,
|
||||||
"totalPrice": 44.96,
|
"shippingProgress": 2
|
||||||
"shippingProgress": 2,
|
|
||||||
"createdAt": "2024-09-12 09:57:24.225 +00:00"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"data": [
|
"data": [
|
||||||
{
|
{
|
||||||
"id": 0,
|
"id": 0,
|
||||||
"brand": "Lenovo",
|
"brandId": 0,
|
||||||
"name": "Thinkpad T14s Gen 4",
|
"name": "Thinkpad T14s Gen 4",
|
||||||
"price": 1769.99,
|
"price": 1769.99,
|
||||||
"categoryId": 1,
|
"categoryId": 1,
|
||||||
@@ -27,11 +27,11 @@
|
|||||||
"thinkpad-t14s-6.avif",
|
"thinkpad-t14s-6.avif",
|
||||||
"thinkpad-t14s-7.avif"
|
"thinkpad-t14s-7.avif"
|
||||||
],
|
],
|
||||||
"storedItems": 5
|
"inStock": 5
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 1,
|
"id": 1,
|
||||||
"brand": "Puma",
|
"brandId": 1,
|
||||||
"name": "Men's T-Shirt Black",
|
"name": "Men's T-Shirt Black",
|
||||||
"price": 14.99,
|
"price": 14.99,
|
||||||
"categoryId": 3,
|
"categoryId": 3,
|
||||||
@@ -52,11 +52,11 @@
|
|||||||
"puma-t-shirt-men-4.jpg",
|
"puma-t-shirt-men-4.jpg",
|
||||||
"puma-t-shirt-men-5.jpg"
|
"puma-t-shirt-men-5.jpg"
|
||||||
],
|
],
|
||||||
"storedItems": 30
|
"inStock": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 2,
|
"id": 2,
|
||||||
"brand": "Puma",
|
"brandId": 1,
|
||||||
"name": "Woman's Shirt",
|
"name": "Woman's Shirt",
|
||||||
"price": 14.99,
|
"price": 14.99,
|
||||||
"categoryId": 3,
|
"categoryId": 3,
|
||||||
@@ -78,11 +78,11 @@
|
|||||||
"puma-t-shirt-woman-5.jpg",
|
"puma-t-shirt-woman-5.jpg",
|
||||||
"puma-t-shirt-woman-6.jpg"
|
"puma-t-shirt-woman-6.jpg"
|
||||||
],
|
],
|
||||||
"storedItems": 30
|
"inStock": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 3,
|
"id": 3,
|
||||||
"brand": "George Orwell",
|
"brandId": 2,
|
||||||
"name": "1984",
|
"name": "1984",
|
||||||
"price": 9.99,
|
"price": 9.99,
|
||||||
"categoryId": 4,
|
"categoryId": 4,
|
||||||
@@ -108,11 +108,11 @@
|
|||||||
"1984-2.webp",
|
"1984-2.webp",
|
||||||
"1984-3.webp"
|
"1984-3.webp"
|
||||||
],
|
],
|
||||||
"storedItems": 30
|
"inStock": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 4,
|
"id": 4,
|
||||||
"brand": "Aldous Huxley",
|
"brandId": 3,
|
||||||
"name": "Brave New World",
|
"name": "Brave New World",
|
||||||
"price": 10.49,
|
"price": 10.49,
|
||||||
"categoryId": 4,
|
"categoryId": 4,
|
||||||
@@ -135,11 +135,11 @@
|
|||||||
"brave-new-world-1.jpg",
|
"brave-new-world-1.jpg",
|
||||||
"brave-new-world-2.jpg"
|
"brave-new-world-2.jpg"
|
||||||
],
|
],
|
||||||
"storedItems": 30
|
"inStock": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 5,
|
"id": 5,
|
||||||
"brand": "Dell",
|
"brandId": 4,
|
||||||
"name": "XPS 8960 Desktop",
|
"name": "XPS 8960 Desktop",
|
||||||
"price": 1640.26,
|
"price": 1640.26,
|
||||||
"categoryId": 1,
|
"categoryId": 1,
|
||||||
@@ -160,11 +160,11 @@
|
|||||||
"dell-xps-desktop-5.jpg",
|
"dell-xps-desktop-5.jpg",
|
||||||
"dell-xps-desktop-6.jpg"
|
"dell-xps-desktop-6.jpg"
|
||||||
],
|
],
|
||||||
"storedItems": 10
|
"inStock": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 6,
|
"id": 6,
|
||||||
"brand": "Fender",
|
"brandId": 5,
|
||||||
"name": "Player II Jazz Bass RW 3TS",
|
"name": "Player II Jazz Bass RW 3TS",
|
||||||
"price": 899.99,
|
"price": 899.99,
|
||||||
"categoryId": 5,
|
"categoryId": 5,
|
||||||
@@ -198,11 +198,11 @@
|
|||||||
"fender-player-ii-jazz-bass-rw-3ts-4.jpg",
|
"fender-player-ii-jazz-bass-rw-3ts-4.jpg",
|
||||||
"fender-player-ii-jazz-bass-rw-3ts-5.jpg"
|
"fender-player-ii-jazz-bass-rw-3ts-5.jpg"
|
||||||
],
|
],
|
||||||
"storedItems": 15
|
"inStock": 15
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 7,
|
"id": 7,
|
||||||
"brand": "ESP",
|
"brandId": 6,
|
||||||
"name": "LTD Iron Cross SW",
|
"name": "LTD Iron Cross SW",
|
||||||
"price": 2999.00,
|
"price": 2999.00,
|
||||||
"categoryId": 5,
|
"categoryId": 5,
|
||||||
@@ -239,11 +239,11 @@
|
|||||||
"esp-lts-iron-cross-sw-5.jpg",
|
"esp-lts-iron-cross-sw-5.jpg",
|
||||||
"esp-lts-iron-cross-sw-6.jpg"
|
"esp-lts-iron-cross-sw-6.jpg"
|
||||||
],
|
],
|
||||||
"storedItems": 0
|
"inStock": 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 8,
|
"id": 8,
|
||||||
"brand": "Pearl",
|
"brandId": 7,
|
||||||
"name": "Decade Maple Standard D. Black",
|
"name": "Decade Maple Standard D. Black",
|
||||||
"price": 1444.00,
|
"price": 1444.00,
|
||||||
"categoryId": 5,
|
"categoryId": 5,
|
||||||
@@ -273,11 +273,11 @@
|
|||||||
"pearl-decade-maple-standard-black-5.jpg",
|
"pearl-decade-maple-standard-black-5.jpg",
|
||||||
"pearl-decade-maple-standard-black-6.jpg"
|
"pearl-decade-maple-standard-black-6.jpg"
|
||||||
],
|
],
|
||||||
"storedItems": 4
|
"inStock": 4
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": 9,
|
"id": 9,
|
||||||
"brand": "Apple",
|
"brandId": 8,
|
||||||
"name": "MacBook Air 13.6 Zoll M3",
|
"name": "MacBook Air 13.6 Zoll M3",
|
||||||
"price": 1759.00,
|
"price": 1759.00,
|
||||||
"categoryId": 1,
|
"categoryId": 1,
|
||||||
@@ -299,7 +299,7 @@
|
|||||||
"macbook-air-4.avif",
|
"macbook-air-4.avif",
|
||||||
"macbook-air-5.avif"
|
"macbook-air-5.avif"
|
||||||
],
|
],
|
||||||
"storedItems": 18
|
"inStock": 18
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -6,6 +6,11 @@ import { Order } from "./models/order.model"
|
|||||||
import { OrderItem } from "./models/orderItem.model"
|
import { OrderItem } from "./models/orderItem.model"
|
||||||
import { Product } from "./models/product.model"
|
import { Product } from "./models/product.model"
|
||||||
import { Account } from "./models/account.model"
|
import { Account } from "./models/account.model"
|
||||||
|
import { prepopulateDatabase } from "./scripts/databaseHelper"
|
||||||
|
import { Address } from "./models/address.model"
|
||||||
|
import { Payment } from "./models/payment.model"
|
||||||
|
import { AccountRole } from "./models/accountRole.model"
|
||||||
|
import { Brand } from "./models/brand.model"
|
||||||
|
|
||||||
const dbName = "database"
|
const dbName = "database"
|
||||||
const dbUser = "root"
|
const dbUser = "root"
|
||||||
@@ -18,13 +23,16 @@ export const sequelize = new Sequelize({
|
|||||||
username: dbUser,
|
username: dbUser,
|
||||||
password: dbPassword,
|
password: dbPassword,
|
||||||
storage: "database.sqlite",
|
storage: "database.sqlite",
|
||||||
models: [ Category, Product, Account, Order, OrderItem ]
|
models: [ Address, Payment, AccountRole, Account, Category, Brand, Product, Order, OrderItem ]
|
||||||
})
|
})
|
||||||
|
|
||||||
export function startDatabase() {
|
export function startDatabase() {
|
||||||
// Create database and tables
|
// Create database and tables
|
||||||
sequelize.sync({ force: false })
|
sequelize.sync({ force: false })
|
||||||
.then(() => {
|
.then(() => {
|
||||||
console.log(`Database & tables created!`)
|
console.log("Database & tables created!")
|
||||||
|
|
||||||
|
//prepopulateDatabase()
|
||||||
|
console.log("Database prepopulated!")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
import { Table, Column, Model, HasMany, Unique } from 'sequelize-typescript';
|
import { Table, Column, Model, HasMany, Unique, BelongsTo, ForeignKey } from 'sequelize-typescript';
|
||||||
import { Order } from './order.model';
|
import { Order } from './order.model';
|
||||||
|
import { Address } from './address.model';
|
||||||
|
import { Payment } from './payment.model';
|
||||||
|
import { AccountRole } from './accountRole.model';
|
||||||
|
|
||||||
@Table
|
@Table({ timestamps: false })
|
||||||
export class Account extends Model {
|
export class Account extends Model {
|
||||||
@Unique
|
@Unique
|
||||||
@Column
|
@Column
|
||||||
@@ -16,25 +19,21 @@ export class Account extends Model {
|
|||||||
@Column
|
@Column
|
||||||
lastName: string = ""
|
lastName: string = ""
|
||||||
|
|
||||||
|
@ForeignKey(() => AccountRole)
|
||||||
@Column
|
@Column
|
||||||
street: string = ""
|
accountRoleId: number
|
||||||
|
|
||||||
@Column
|
|
||||||
houseNumber: number = 0
|
|
||||||
|
|
||||||
@Column
|
|
||||||
postalCode: number = 0
|
|
||||||
|
|
||||||
@Column
|
|
||||||
city: string
|
|
||||||
|
|
||||||
@Column
|
|
||||||
bankName: string
|
|
||||||
|
|
||||||
@Column
|
|
||||||
iban: string
|
|
||||||
|
|
||||||
// Relations
|
// Relations
|
||||||
|
@HasMany(() => Address)
|
||||||
|
addresses: Address[]
|
||||||
|
|
||||||
|
@HasMany(() => Payment)
|
||||||
|
payments: Payment[]
|
||||||
|
|
||||||
@HasMany(() => Order)
|
@HasMany(() => Order)
|
||||||
orders: Order[]
|
orders: Order[]
|
||||||
|
|
||||||
|
@BelongsTo(() => AccountRole)
|
||||||
|
accountRole: AccountRole
|
||||||
}
|
}
|
||||||
19
software/backend/models/accountRole.model.ts
Normal file
19
software/backend/models/accountRole.model.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import { Column, HasMany, Model, Table } from "sequelize-typescript";
|
||||||
|
import { Account } from "./account.model";
|
||||||
|
|
||||||
|
@Table({ timestamps: false })
|
||||||
|
export class AccountRole extends Model {
|
||||||
|
@Column
|
||||||
|
name: string
|
||||||
|
|
||||||
|
@Column
|
||||||
|
privilegeBuy: boolean
|
||||||
|
|
||||||
|
@Column
|
||||||
|
privilegeAdminPanel: boolean
|
||||||
|
|
||||||
|
|
||||||
|
// Relations
|
||||||
|
@HasMany(() => Account)
|
||||||
|
accounts: Account[]
|
||||||
|
}
|
||||||
27
software/backend/models/address.model.ts
Normal file
27
software/backend/models/address.model.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { BelongsTo, Column, ForeignKey, Model, Table } from "sequelize-typescript";
|
||||||
|
import { Account } from "./account.model";
|
||||||
|
|
||||||
|
@Table({ timestamps: false })
|
||||||
|
export class Address extends Model {
|
||||||
|
@ForeignKey(() => Account)
|
||||||
|
@Column
|
||||||
|
accountId: number
|
||||||
|
|
||||||
|
@Column
|
||||||
|
street: string
|
||||||
|
|
||||||
|
@Column
|
||||||
|
houseNumber: number
|
||||||
|
|
||||||
|
@Column
|
||||||
|
postalCode: number
|
||||||
|
|
||||||
|
@Column
|
||||||
|
city: string
|
||||||
|
|
||||||
|
|
||||||
|
// Relations
|
||||||
|
|
||||||
|
@BelongsTo(() => Account)
|
||||||
|
account: Account
|
||||||
|
}
|
||||||
14
software/backend/models/brand.model.ts
Normal file
14
software/backend/models/brand.model.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { Column, HasMany, Model, Table } from "sequelize-typescript";
|
||||||
|
import { Product } from "./product.model";
|
||||||
|
|
||||||
|
@Table({ timestamps: false })
|
||||||
|
export class Brand extends Model {
|
||||||
|
@Column
|
||||||
|
name: string
|
||||||
|
|
||||||
|
|
||||||
|
// Relations
|
||||||
|
|
||||||
|
@HasMany(() => Product)
|
||||||
|
products: Product[]
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Table, Column, Model, BelongsTo, ForeignKey, HasMany, Unique } from 'sequelize-typescript';
|
import { Table, Column, Model, BelongsTo, ForeignKey, HasMany, Unique } from 'sequelize-typescript';
|
||||||
import { Product } from './product.model';
|
import { Product } from './product.model';
|
||||||
|
|
||||||
@Table
|
@Table({ timestamps: false })
|
||||||
export class Category extends Model {
|
export class Category extends Model {
|
||||||
@Unique
|
@Unique
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
@@ -1,18 +1,22 @@
|
|||||||
import { Table, Column, Model, BelongsTo, ForeignKey, HasMany, BelongsToMany } from 'sequelize-typescript';
|
import { Table, Column, Model, BelongsTo, ForeignKey, HasMany, BelongsToMany, Default } from 'sequelize-typescript';
|
||||||
import { Account } from './account.model';
|
import { Account } from './account.model';
|
||||||
import { OrderItem } from './orderItem.model';
|
import { OrderItem } from './orderItem.model';
|
||||||
|
|
||||||
@Table
|
@Table({
|
||||||
|
updatedAt: false,
|
||||||
|
createdAt: 'orderedAt'
|
||||||
|
})
|
||||||
export class Order extends Model {
|
export class Order extends Model {
|
||||||
@Column
|
@Column
|
||||||
@ForeignKey(() => Account)
|
@ForeignKey(() => Account)
|
||||||
accountId: number
|
accountId: number
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
totalPrice: number
|
orderedAt: Date
|
||||||
|
|
||||||
|
@Default(1)
|
||||||
@Column
|
@Column
|
||||||
shippingProgress: number = 1
|
shippingProgress: number
|
||||||
|
|
||||||
|
|
||||||
// Relations
|
// Relations
|
||||||
@@ -20,5 +24,5 @@ export class Order extends Model {
|
|||||||
account: Account
|
account: Account
|
||||||
|
|
||||||
@HasMany(() => OrderItem)
|
@HasMany(() => OrderItem)
|
||||||
orderItem: OrderItem[]
|
orderItems: OrderItem[]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Model, BelongsTo, Column, ForeignKey, HasMany, HasOne, Table } from "se
|
|||||||
import { Product } from "./product.model";
|
import { Product } from "./product.model";
|
||||||
import { Order } from "./order.model";
|
import { Order } from "./order.model";
|
||||||
|
|
||||||
@Table
|
@Table({ timestamps: false })
|
||||||
export class OrderItem extends Model {
|
export class OrderItem extends Model {
|
||||||
@Column
|
@Column
|
||||||
@ForeignKey(() => Order)
|
@ForeignKey(() => Order)
|
||||||
@@ -11,6 +11,9 @@ export class OrderItem extends Model {
|
|||||||
@Column
|
@Column
|
||||||
quantity: number
|
quantity: number
|
||||||
|
|
||||||
|
@Column
|
||||||
|
orderPrice: number
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ForeignKey(() => Product)
|
@ForeignKey(() => Product)
|
||||||
productId: number
|
productId: number
|
||||||
|
|||||||
20
software/backend/models/payment.model.ts
Normal file
20
software/backend/models/payment.model.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import { BelongsTo, Column, ForeignKey, Model, Table } from "sequelize-typescript";
|
||||||
|
import { Account } from "./account.model";
|
||||||
|
|
||||||
|
@Table({ timestamps: false })
|
||||||
|
export class Payment extends Model {
|
||||||
|
@ForeignKey(() => Account)
|
||||||
|
@Column
|
||||||
|
accountId: number
|
||||||
|
|
||||||
|
@Column
|
||||||
|
bankName: string
|
||||||
|
|
||||||
|
@Column
|
||||||
|
iban: string
|
||||||
|
|
||||||
|
|
||||||
|
// Relations
|
||||||
|
@BelongsTo(() => Account)
|
||||||
|
account: Account
|
||||||
|
}
|
||||||
@@ -1,18 +1,23 @@
|
|||||||
import { Table, Column, Model, ForeignKey, BelongsTo, BelongsToMany, HasMany, DataType } from 'sequelize-typescript';
|
import { Table, Column, Model, ForeignKey, BelongsTo, BelongsToMany, HasMany, DataType } from 'sequelize-typescript';
|
||||||
import { Category } from './category.model';
|
import { Category } from './category.model';
|
||||||
import { OrderItem } from './orderItem.model';
|
import { OrderItem } from './orderItem.model';
|
||||||
|
import { Brand } from './brand.model';
|
||||||
|
|
||||||
@Table
|
@Table({ timestamps: false })
|
||||||
export class Product extends Model {
|
export class Product extends Model {
|
||||||
@Column
|
@Column
|
||||||
brand: string
|
@ForeignKey(() => Category)
|
||||||
|
categoryId: number
|
||||||
|
|
||||||
|
@ForeignKey(() => Brand)
|
||||||
|
@Column
|
||||||
|
brandId: number
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
name: string
|
name: string
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@ForeignKey(() => Category)
|
description: string
|
||||||
categoryId: number
|
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
price: number
|
price: number
|
||||||
@@ -23,19 +28,8 @@ export class Product extends Model {
|
|||||||
@Column
|
@Column
|
||||||
rating: number
|
rating: number
|
||||||
|
|
||||||
@Column({
|
|
||||||
type: DataType.STRING,
|
|
||||||
get(): Array<string> {
|
|
||||||
return this.getDataValue('images').split(';')
|
|
||||||
},
|
|
||||||
set(value: Array<string>) {
|
|
||||||
this.setDataValue('images', value.join(';'))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
images: Array<string>
|
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
description: string
|
inStock: number
|
||||||
|
|
||||||
@Column({
|
@Column({
|
||||||
type: DataType.STRING,
|
type: DataType.STRING,
|
||||||
@@ -48,13 +42,26 @@ export class Product extends Model {
|
|||||||
})
|
})
|
||||||
specs: Array<string>
|
specs: Array<string>
|
||||||
|
|
||||||
@Column
|
@Column({
|
||||||
storedItems: number
|
type: DataType.STRING,
|
||||||
|
get(): Array<string> {
|
||||||
|
return this.getDataValue('images').split(';')
|
||||||
|
},
|
||||||
|
set(value: Array<string>) {
|
||||||
|
this.setDataValue('images', value.join(';'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
images: Array<string>
|
||||||
|
|
||||||
|
|
||||||
// Relations
|
// Relations
|
||||||
|
|
||||||
@BelongsTo(() => Category)
|
@BelongsTo(() => Category)
|
||||||
category: Category
|
category: Category
|
||||||
|
|
||||||
|
@BelongsTo(() => Brand)
|
||||||
|
brand: Brand
|
||||||
|
|
||||||
@HasMany(() => OrderItem)
|
@HasMany(() => OrderItem)
|
||||||
order: OrderItem
|
orders: OrderItem[]
|
||||||
}
|
}
|
||||||
@@ -1,27 +1,41 @@
|
|||||||
import { Router, Request, Response, NextFunction } from "express";
|
import { Router, Request, Response } from "express";
|
||||||
import { Account } from "../models/account.model";
|
import { Account } from "../models/account.model";
|
||||||
import { validateString } from "../scripts/validateHelper";
|
import { validateString } from "../scripts/validateHelper";
|
||||||
|
import { Address } from "../models/address.model";
|
||||||
|
import { Payment } from "../models/payment.model";
|
||||||
|
import { AccountRole } from "../models/accountRole.model";
|
||||||
|
|
||||||
export const account = Router()
|
export const account = Router()
|
||||||
|
|
||||||
// Login user
|
// Login user
|
||||||
account.post("/login", (req: Request, res: Response) => {
|
account.post("/login", (req: Request, res: Response) => {
|
||||||
Account.findOne({
|
Account.findOne({
|
||||||
raw: true,
|
where: { username: req.body.username },
|
||||||
where: { username: req.body.username }
|
include: [ Address, Payment, AccountRole ],
|
||||||
|
attributes: {
|
||||||
|
exclude: [
|
||||||
|
"accountRoleId"
|
||||||
|
]
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.then(account => {
|
.then(account => {
|
||||||
if (account != null) {
|
if (account != null) {
|
||||||
if (account.password == req.body.password) {
|
if (account.dataValues.password == req.body.password) {
|
||||||
// Status: 200 OK
|
// Status: 200 OK
|
||||||
res.status(200).json(account).send()
|
res.status(200).json(account).send()
|
||||||
} else {
|
} else {
|
||||||
// Status: 401 Unauthorized
|
// Status: 401 Unauthorized
|
||||||
res.status(401).send()
|
res.status(401).json({
|
||||||
|
code: 401,
|
||||||
|
message: "Unauthorized"
|
||||||
|
}).send()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Status: 400 Bad request
|
// Status: 400 Bad request
|
||||||
res.status(400).send()
|
res.status(400).json({
|
||||||
|
code: 400,
|
||||||
|
message: "Bad Request"
|
||||||
|
}).send()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@@ -34,6 +48,7 @@ account.post("/", (req: Request, res: Response) => {
|
|||||||
{
|
{
|
||||||
// Status: 400 Bad request
|
// Status: 400 Bad request
|
||||||
res.status(400).json({
|
res.status(400).json({
|
||||||
|
code: 400,
|
||||||
message: "Username too short!"
|
message: "Username too short!"
|
||||||
}).send()
|
}).send()
|
||||||
}
|
}
|
||||||
@@ -43,6 +58,7 @@ account.post("/", (req: Request, res: Response) => {
|
|||||||
{
|
{
|
||||||
// Status: 400 Bad request
|
// Status: 400 Bad request
|
||||||
res.status(400).json({
|
res.status(400).json({
|
||||||
|
code: 400,
|
||||||
message: "Password too short!"
|
message: "Password too short!"
|
||||||
}).send()
|
}).send()
|
||||||
}
|
}
|
||||||
@@ -54,7 +70,10 @@ account.post("/", (req: Request, res: Response) => {
|
|||||||
res.status(201).json(account).send()
|
res.status(201).json(account).send()
|
||||||
}).catch(reason => {
|
}).catch(reason => {
|
||||||
// Status: 409 Conflict
|
// Status: 409 Conflict
|
||||||
res.status(409).send()
|
res.status(409).json({
|
||||||
|
code: 409,
|
||||||
|
message: "Username already in use"
|
||||||
|
}).send()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -70,7 +89,8 @@ account.patch("/", (req: Request, res: Response) => {
|
|||||||
.catch(error => {
|
.catch(error => {
|
||||||
// Status: 400 Bad request
|
// Status: 400 Bad request
|
||||||
res.status(400).json({
|
res.status(400).json({
|
||||||
message: error
|
code: 400,
|
||||||
|
message: error
|
||||||
}).send()
|
}).send()
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -9,19 +9,17 @@ category.get("/", (req: Request, res: Response, next: NextFunction) => {
|
|||||||
.then(categories => {
|
.then(categories => {
|
||||||
res.status(200).json(categories).send()
|
res.status(200).json(categories).send()
|
||||||
})
|
})
|
||||||
.catch(error => {
|
|
||||||
res.status(400)
|
|
||||||
})
|
|
||||||
})
|
})
|
||||||
|
|
||||||
// Add new category
|
// Add new category
|
||||||
category.post("/", (req: Request, res: Response, next: NextFunction) => {
|
category.post("/", (req: Request, res: Response, next: NextFunction) => {
|
||||||
Category.create(req.body)
|
Category.create(req.body)
|
||||||
.then(category => {
|
.then(category => {
|
||||||
res.status(201).send()
|
res.status(201).json(category).send()
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
res.status(400).json({
|
res.status(400).json({
|
||||||
|
code: 400,
|
||||||
message: error
|
message: error
|
||||||
}).send()
|
}).send()
|
||||||
})
|
})
|
||||||
@@ -33,10 +31,11 @@ category.delete("/:id", (req: Request, res: Response, next: NextFunction) => {
|
|||||||
where: { id: req.params.id }
|
where: { id: req.params.id }
|
||||||
})
|
})
|
||||||
.then(category => {
|
.then(category => {
|
||||||
res.status(200).send()
|
res.status(200).json(category).send()
|
||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
res.status(400).json({
|
res.status(400).json({
|
||||||
|
code: 400,
|
||||||
message: error
|
message: error
|
||||||
}).send()
|
}).send()
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -23,31 +23,25 @@ order.post("/", (req: Request, res: Response) => {
|
|||||||
let totalPrice = 0
|
let totalPrice = 0
|
||||||
|
|
||||||
Order.create(req.body)
|
Order.create(req.body)
|
||||||
.then(order => {
|
.then(async order => {
|
||||||
|
for (let orderItem of req.body.orderItems) {
|
||||||
for (let orderItem of req.body.orderItem) {
|
|
||||||
OrderItem.create({
|
OrderItem.create({
|
||||||
"orderId": order.id,
|
"orderId": order.id,
|
||||||
"quantity": orderItem.quantity,
|
"quantity": orderItem.quantity,
|
||||||
|
"orderPrice": orderItem.orderPrice,
|
||||||
"productId": orderItem.productId
|
"productId": orderItem.productId
|
||||||
})
|
})
|
||||||
|
|
||||||
Product.findOne({
|
totalPrice += orderItem.quantity * orderItem.orderPrice
|
||||||
raw: true,
|
|
||||||
where: { id: orderItem.productId }
|
Order.update({
|
||||||
|
totalPrice: totalPrice
|
||||||
|
}, {
|
||||||
|
where: { id: order.id }
|
||||||
})
|
})
|
||||||
.then(product => {
|
|
||||||
totalPrice += product.price * orderItem.quantity
|
|
||||||
|
|
||||||
Order.update({
|
|
||||||
totalPrice: totalPrice
|
|
||||||
}, {
|
|
||||||
where: { id: order.id },
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
// Created
|
// Created
|
||||||
res.status(201).send()
|
res.status(201).json(order).send()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
@@ -1,13 +1,20 @@
|
|||||||
import { Router, Request, Response, NextFunction } from "express";
|
import { Router, Request, Response, NextFunction } from "express";
|
||||||
import { Product } from "../models/product.model";
|
import { Product } from "../models/product.model";
|
||||||
import { Category } from "../models/category.model";
|
import { Category } from "../models/category.model";
|
||||||
|
import { Brand } from "../models/brand.model";
|
||||||
|
|
||||||
export const product = Router()
|
export const product = Router()
|
||||||
|
|
||||||
// Get all products
|
// Get all products
|
||||||
product.get("/", (req: Request, res: Response) => {
|
product.get("/", (req: Request, res: Response) => {
|
||||||
Product.findAll({
|
Product.findAll({
|
||||||
include: [ Category ]
|
include: [ Category, Brand ],
|
||||||
|
attributes: {
|
||||||
|
exclude: [
|
||||||
|
"categoryId",
|
||||||
|
"brandId"
|
||||||
|
]
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.then(products => {
|
.then(products => {
|
||||||
res.status(200).json(products)
|
res.status(200).json(products)
|
||||||
@@ -16,7 +23,18 @@ product.get("/", (req: Request, res: Response) => {
|
|||||||
|
|
||||||
// Get a product by id
|
// Get a product by id
|
||||||
product.get("/:productId", (req: Request, res: Response) => {
|
product.get("/:productId", (req: Request, res: Response) => {
|
||||||
Product.findByPk(req.params.productId)
|
Product.findByPk(
|
||||||
|
req.params.productId,
|
||||||
|
{
|
||||||
|
include: [ Category, Brand ],
|
||||||
|
attributes: {
|
||||||
|
exclude: [
|
||||||
|
"categoryId",
|
||||||
|
"brandId"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
.then(product => {
|
.then(product => {
|
||||||
res.status(200).json(product).send()
|
res.status(200).json(product).send()
|
||||||
})
|
})
|
||||||
@@ -30,6 +48,7 @@ product.post("/", (req: Request, res: Response) => {
|
|||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
res.status(400).json({
|
res.status(400).json({
|
||||||
|
code: 400,
|
||||||
message: error
|
message: error
|
||||||
}).send()
|
}).send()
|
||||||
})
|
})
|
||||||
@@ -45,6 +64,7 @@ product.delete("/:id", (req: Request, res: Response) => {
|
|||||||
})
|
})
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
res.status(400).json({
|
res.status(400).json({
|
||||||
|
code: 400,
|
||||||
message: error
|
message: error
|
||||||
}).send()
|
}).send()
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -3,12 +3,18 @@ import { Order } from '../models/order.model'
|
|||||||
import { OrderItem } from '../models/orderItem.model'
|
import { OrderItem } from '../models/orderItem.model'
|
||||||
import { Product } from '../models/product.model'
|
import { Product } from '../models/product.model'
|
||||||
import { Account } from '../models/account.model'
|
import { Account } from '../models/account.model'
|
||||||
|
import { Address } from '../models/address.model'
|
||||||
|
import { Payment } from '../models/payment.model'
|
||||||
|
import { AccountRole } from '../models/accountRole.model'
|
||||||
|
import { Brand } from '../models/brand.model'
|
||||||
|
|
||||||
import categories from "./../data/categories.json"
|
import categories from "./../data/categories.json"
|
||||||
import products from "./../data/products.json"
|
import products from "./../data/products.json"
|
||||||
import accounts from "./../data/accounts.json"
|
import accounts from "./../data/accounts.json"
|
||||||
import orders from "./../data/orders.json"
|
import orders from "./../data/orders.json"
|
||||||
import orderItems from "./../data/orderItems.json"
|
import orderItems from "./../data/orderItems.json"
|
||||||
|
import accountRoles from "./../data/accountRoles.json"
|
||||||
|
import brands from "./../data/brands.json"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete all datasets in every database table
|
* Delete all datasets in every database table
|
||||||
@@ -24,10 +30,22 @@ export function deleteAllTables() {
|
|||||||
/**
|
/**
|
||||||
* Insert default datasets in the database tables
|
* Insert default datasets in the database tables
|
||||||
*/
|
*/
|
||||||
export function prepopulateDatabase() {
|
export async function prepopulateDatabase() {
|
||||||
|
AccountRole.bulkCreate(accountRoles.data)
|
||||||
|
|
||||||
|
// Account & Sub tables
|
||||||
|
for (let account of accounts.data) {
|
||||||
|
await Account.create(account)
|
||||||
|
.then(dataset => {
|
||||||
|
Address.bulkCreate(account.addresses)
|
||||||
|
Payment.bulkCreate(account.payments)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
Category.bulkCreate(categories.data)
|
Category.bulkCreate(categories.data)
|
||||||
|
Brand.bulkCreate(brands.data)
|
||||||
Product.bulkCreate(products.data)
|
Product.bulkCreate(products.data)
|
||||||
Account.bulkCreate(accounts.data)
|
|
||||||
Order.bulkCreate(orders.data)
|
Order.bulkCreate(orders.data)
|
||||||
OrderItem.bulkCreate(orderItems.data)
|
OrderItem.bulkCreate(orderItems.data)
|
||||||
}
|
}
|
||||||
@@ -10,8 +10,7 @@ defineProps({
|
|||||||
type: String
|
type: String
|
||||||
},
|
},
|
||||||
subtitle: {
|
subtitle: {
|
||||||
type: String,
|
type: String
|
||||||
default: ""
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ModelRef } from 'vue';
|
import { ModelRef } from 'vue';
|
||||||
import actionDialog from './actionDialog.vue';
|
import actionDialog from './actionDialog.vue';
|
||||||
|
import outlinedButton from './outlinedButton.vue';
|
||||||
|
|
||||||
const showDialog: ModelRef<boolean> = defineModel()
|
const showDialog: ModelRef<boolean> = defineModel()
|
||||||
|
|
||||||
@@ -31,21 +32,19 @@ function confirmPressed() {
|
|||||||
</v-container>
|
</v-container>
|
||||||
|
|
||||||
<template #actions>
|
<template #actions>
|
||||||
<v-btn
|
<outlined-button
|
||||||
@click="showDialog = false"
|
@click="showDialog = false"
|
||||||
color="green"
|
color="green"
|
||||||
variant="outlined"
|
|
||||||
>
|
>
|
||||||
{{ $t("dialog.cancel") }}
|
{{ $t("dialog.cancel") }}
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
|
|
||||||
<v-btn
|
<outlined-button
|
||||||
@click="confirmPressed"
|
@click="confirmPressed"
|
||||||
color="red"
|
color="red"
|
||||||
variant="outlined"
|
|
||||||
>
|
>
|
||||||
{{ $t("dialog.confirm") }}
|
{{ $t("dialog.confirm") }}
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
</template>
|
</template>
|
||||||
</action-dialog>
|
</action-dialog>
|
||||||
</template>
|
</template>
|
||||||
19
software/src/components/outlinedButton.vue
Normal file
19
software/src/components/outlinedButton.vue
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
defineProps({
|
||||||
|
prependIcon: String,
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
default: "primary"
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<v-btn
|
||||||
|
:prepend-icon="prependIcon"
|
||||||
|
variant="outlined"
|
||||||
|
:color="color"
|
||||||
|
>
|
||||||
|
<slot></slot>
|
||||||
|
</v-btn>
|
||||||
|
</template>
|
||||||
@@ -1,7 +1,16 @@
|
|||||||
import axios from "axios"
|
import axios from "axios"
|
||||||
|
import { OrderModel } from "../models/orderModel"
|
||||||
|
import { BasketItemModel } from "../models/basketItemModel"
|
||||||
|
|
||||||
const BASE_URL = "http://localhost:3000/orders"
|
const BASE_URL = "http://localhost:3000/orders"
|
||||||
|
|
||||||
export async function getUserOrders(userId: number) {
|
export async function getUserOrders(userId: number) {
|
||||||
return axios.get(BASE_URL + "/" + userId)
|
return axios.get(BASE_URL + "/" + userId)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function addOrder(accountId: number, basketItems: Array<BasketItemModel>) {
|
||||||
|
return axios.post(BASE_URL, {
|
||||||
|
"accountId": accountId,
|
||||||
|
"orderItem": basketItems
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
export class BasketItemModel {
|
export class BasketItemModel {
|
||||||
productId: number = -1
|
id: number = -1
|
||||||
brand: string = ""
|
brand: string = ""
|
||||||
name: string = ""
|
name: string = ""
|
||||||
categoryName: string = ""
|
categoryName: string = ""
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ import { calcProductPrice } from "@/scripts/productScripts";
|
|||||||
import { BasketItemModel } from "../models/basketItemModel";
|
import { BasketItemModel } from "../models/basketItemModel";
|
||||||
import { useFeedbackStore } from "./feedbackStore";
|
import { useFeedbackStore } from "./feedbackStore";
|
||||||
import { BannerStateEnum } from "../enums/bannerStateEnum";
|
import { BannerStateEnum } from "../enums/bannerStateEnum";
|
||||||
|
import { OrderModel } from "../models/orderModel";
|
||||||
|
import { useUserStore } from "./userStore";
|
||||||
|
import { addOrder } from "../api/orderApi";
|
||||||
|
|
||||||
export const useBasketStore = defineStore('basket', {
|
export const useBasketStore = defineStore('basket', {
|
||||||
state: () => ({
|
state: () => ({
|
||||||
@@ -42,6 +45,18 @@ export const useBasketStore = defineStore('basket', {
|
|||||||
} else {
|
} else {
|
||||||
this.itemsInBasket.push(item)
|
this.itemsInBasket.push(item)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
takeOrder() {
|
||||||
|
const userStore = useUserStore()
|
||||||
|
//
|
||||||
|
// const order = new OrderModel()
|
||||||
|
// order.accountId = userStore.userAccount.id
|
||||||
|
// order.orderItem = this.itemsInBasket
|
||||||
|
//
|
||||||
|
// console.log(order)
|
||||||
|
|
||||||
|
addOrder(userStore.userAccount.id, this.itemsInBasket)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -46,7 +46,8 @@
|
|||||||
"ordered": "Bestellt",
|
"ordered": "Bestellt",
|
||||||
"preparingForShipping": "Versandvorbereitung",
|
"preparingForShipping": "Versandvorbereitung",
|
||||||
"shipped": "Versendet",
|
"shipped": "Versendet",
|
||||||
"delivered": "Geliefert"
|
"delivered": "Geliefert",
|
||||||
|
"inDelivery": "In Zustellung"
|
||||||
},
|
},
|
||||||
"userInfo": {
|
"userInfo": {
|
||||||
"firstName": "Vorname",
|
"firstName": "Vorname",
|
||||||
@@ -90,7 +91,8 @@
|
|||||||
},
|
},
|
||||||
"oclock": "Uhr",
|
"oclock": "Uhr",
|
||||||
"ordering": {
|
"ordering": {
|
||||||
"ordering": "Bestellabschluss"
|
"ordering": "Bestellabschluss",
|
||||||
|
"takeOrder": "Bestellung ausführen"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"cancel": "Abbrechen",
|
"cancel": "Abbrechen",
|
||||||
|
|||||||
@@ -46,7 +46,8 @@
|
|||||||
"ordered": "Ordered",
|
"ordered": "Ordered",
|
||||||
"preparingForShipping": "Preparing for shipping",
|
"preparingForShipping": "Preparing for shipping",
|
||||||
"shipped": "Shipped",
|
"shipped": "Shipped",
|
||||||
"delivered": "Delivered"
|
"delivered": "Delivered",
|
||||||
|
"inDelivery": "In Delivery"
|
||||||
},
|
},
|
||||||
"userInfo": {
|
"userInfo": {
|
||||||
"firstName": "First Name",
|
"firstName": "First Name",
|
||||||
@@ -90,7 +91,8 @@
|
|||||||
},
|
},
|
||||||
"oclock": "o'clock",
|
"oclock": "o'clock",
|
||||||
"ordering": {
|
"ordering": {
|
||||||
"ordering": "Finish order"
|
"ordering": "Finish order",
|
||||||
|
"takeOrder": "Do order now"
|
||||||
},
|
},
|
||||||
"dialog": {
|
"dialog": {
|
||||||
"cancel": "Cancel",
|
"cancel": "Cancel",
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { useUserStore } from '@/data/stores/userStore';
|
import { useUserStore } from '@/data/stores/userStore';
|
||||||
import cardView from '@/components/cardView.vue';
|
import cardView from '@/components/cardView.vue';
|
||||||
|
import outlinedButton from '@/components/outlinedButton.vue';
|
||||||
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
</script>
|
</script>
|
||||||
@@ -87,14 +88,13 @@ const userStore = useUserStore()
|
|||||||
</v-container>
|
</v-container>
|
||||||
|
|
||||||
<template #actions>
|
<template #actions>
|
||||||
<v-btn
|
<outlined-button
|
||||||
@click="userStore.updateAccount()"
|
@click="userStore.updateAccount()"
|
||||||
variant="outlined"
|
|
||||||
prepend-icon="mdi-content-save"
|
prepend-icon="mdi-content-save"
|
||||||
color="green"
|
color="green"
|
||||||
>
|
>
|
||||||
Save
|
Save
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
</template>
|
</template>
|
||||||
</card-view>
|
</card-view>
|
||||||
</template>
|
</template>
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import cardView from '@/components/cardView.vue';
|
import cardView from '@/components/cardView.vue';
|
||||||
import confirmDialog from '@/components/confirmDialog.vue';
|
import confirmDialog from '@/components/confirmDialog.vue';
|
||||||
|
import outlinedButton from '@/components/outlinedButton.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
|
|
||||||
const showConfirmDialog = ref(false)
|
const showConfirmDialog = ref(false)
|
||||||
@@ -15,14 +16,13 @@ function deleteAccount() {
|
|||||||
<v-container>
|
<v-container>
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col class="d-flex justify-center align-center">
|
<v-col class="d-flex justify-center align-center">
|
||||||
<v-btn
|
<outlined-button
|
||||||
prepend-icon="mdi-delete"
|
prepend-icon="mdi-delete"
|
||||||
variant="outlined"
|
|
||||||
color="red"
|
color="red"
|
||||||
@click="showConfirmDialog = true"
|
@click="showConfirmDialog = true"
|
||||||
>
|
>
|
||||||
{{ $t("account.delete") }}
|
{{ $t("account.delete") }}
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-container>
|
</v-container>
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import alertBanner from '@/components/alertBanner.vue';
|
|||||||
import cardView from '@/components/cardView.vue';
|
import cardView from '@/components/cardView.vue';
|
||||||
import { useUserStore } from '@/data/stores/userStore';
|
import { useUserStore } from '@/data/stores/userStore';
|
||||||
import orderingDialog from './orderingDialog.vue';
|
import orderingDialog from './orderingDialog.vue';
|
||||||
|
import outlinedButton from '@/components/outlinedButton.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
|
|
||||||
const basketStore = useBasketStore()
|
const basketStore = useBasketStore()
|
||||||
@@ -44,7 +45,7 @@ const showOrderingDialog = ref()
|
|||||||
</v-card-text>
|
</v-card-text>
|
||||||
|
|
||||||
<template #actions>
|
<template #actions>
|
||||||
<v-btn
|
<outlined-button
|
||||||
prepend-icon="mdi-basket-check"
|
prepend-icon="mdi-basket-check"
|
||||||
:disabled="basketStore.itemsInBasket.length == 0 || userStore.userAccount.id == null"
|
:disabled="basketStore.itemsInBasket.length == 0 || userStore.userAccount.id == null"
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
@@ -52,7 +53,7 @@ const showOrderingDialog = ref()
|
|||||||
@click="showOrderingDialog = true"
|
@click="showOrderingDialog = true"
|
||||||
>
|
>
|
||||||
{{ $t('orderNow') }}
|
{{ $t('orderNow') }}
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
</template>
|
</template>
|
||||||
</card-view>
|
</card-view>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|||||||
@@ -1,9 +1,25 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import actionDialog from '@/components/actionDialog.vue';
|
import actionDialog from '@/components/actionDialog.vue';
|
||||||
|
import { useBasketStore } from '@/data/stores/basketStore';
|
||||||
|
import outlinedButton from '@/components/outlinedButton.vue';
|
||||||
|
|
||||||
|
const basketStore = useBasketStore()
|
||||||
|
|
||||||
|
function doOrder() {
|
||||||
|
basketStore.takeOrder()
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<action-dialog
|
<action-dialog
|
||||||
:title="$t('ordering.ordering')"
|
:title="$t('ordering.ordering')"
|
||||||
/>
|
>
|
||||||
|
<template #actions>
|
||||||
|
<outlined-button
|
||||||
|
@click="doOrder"
|
||||||
|
>
|
||||||
|
{{ $t('ordering.takeOrder') }}
|
||||||
|
</outlined-button>
|
||||||
|
</template>
|
||||||
|
</action-dialog>
|
||||||
</template>
|
</template>
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
import { useUserStore } from '@/data/stores/userStore';
|
import { useUserStore } from '@/data/stores/userStore';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import cardView from '@/components/cardView.vue';
|
import cardView from '@/components/cardView.vue';
|
||||||
|
import outlinedButton from '@/components/outlinedButton.vue';
|
||||||
|
|
||||||
const userStore = useUserStore()
|
const userStore = useUserStore()
|
||||||
const showRegisterCard = defineModel("showRegisterCard", { type: Boolean, default: false })
|
const showRegisterCard = defineModel("showRegisterCard", { type: Boolean, default: false })
|
||||||
@@ -31,13 +32,19 @@ function startLogin() {
|
|||||||
</v-container>
|
</v-container>
|
||||||
|
|
||||||
<template #actions>
|
<template #actions>
|
||||||
<v-btn variant="outlined" @click="showRegisterCard = true" color="primary" prepend-icon="mdi-plus">
|
<outlined-button
|
||||||
|
@click="showRegisterCard = true"
|
||||||
|
prepend-icon="mdi-plus"
|
||||||
|
>
|
||||||
{{ $t('account.noAccountRegister') }}
|
{{ $t('account.noAccountRegister') }}
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
<v-spacer />
|
|
||||||
<v-btn variant="outlined" append-icon="mdi-arrow-right" color="primary"
|
|
||||||
@click="startLogin">{{ $t('menu.login') }}</v-btn>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
|
<outlined-button
|
||||||
|
append-icon="mdi-arrow-right"
|
||||||
|
@click="startLogin"
|
||||||
|
>
|
||||||
|
{{ $t('menu.login') }}
|
||||||
|
</outlined-button>
|
||||||
|
</template>
|
||||||
</card-view>
|
</card-view>
|
||||||
</template>
|
</template>
|
||||||
@@ -3,6 +3,7 @@ import { AccountModel } from '@/data/models/accountModel';
|
|||||||
import { useUserStore } from '@/data/stores/userStore';
|
import { useUserStore } from '@/data/stores/userStore';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import cardView from '@/components/cardView.vue';
|
import cardView from '@/components/cardView.vue';
|
||||||
|
import outlinedButton from '@/components/outlinedButton.vue';
|
||||||
|
|
||||||
const newUser = ref(new AccountModel())
|
const newUser = ref(new AccountModel())
|
||||||
const showRegisterCard = defineModel("showRegisterCard", { type: Boolean, default: false })
|
const showRegisterCard = defineModel("showRegisterCard", { type: Boolean, default: false })
|
||||||
@@ -78,15 +79,19 @@ const userStore = useUserStore()
|
|||||||
</v-container>
|
</v-container>
|
||||||
|
|
||||||
<template #actions>
|
<template #actions>
|
||||||
<v-btn prepend-icon="mdi-arrow-left" color="primary" variant="outlined"
|
<outlined-button
|
||||||
@click="showRegisterCard = false">
|
prepend-icon="mdi-arrow-left"
|
||||||
{{ $t('account.backToLogin') }}
|
@click="showRegisterCard = false"
|
||||||
</v-btn>
|
>
|
||||||
<v-spacer />
|
{{ $t('account.backToLogin') }}
|
||||||
<v-btn prepend-icon="mdi-account-plus" color="primary" variant="outlined"
|
</outlined-button>
|
||||||
@click="userStore.registerAccount(newUser)">
|
|
||||||
{{ $t('account.register') }}
|
<outlined-button
|
||||||
</v-btn>
|
prepend-icon="mdi-account-plus"
|
||||||
|
@click="userStore.registerAccount(newUser)"
|
||||||
|
>
|
||||||
|
{{ $t('account.register') }}
|
||||||
|
</outlined-button>
|
||||||
</template>
|
</template>
|
||||||
</card-view>
|
</card-view>
|
||||||
</template>
|
</template>
|
||||||
@@ -6,13 +6,13 @@ defineProps({
|
|||||||
order: OrderModel
|
order: OrderModel
|
||||||
})
|
})
|
||||||
|
|
||||||
function getDotColor(order, step: number) {
|
function getDotColor(order: OrderModel, step: number) {
|
||||||
if (order.shippingProgress == step)
|
if (order.shippingProgress >= step)
|
||||||
{
|
|
||||||
return "orange"
|
|
||||||
} else if (order.shippingProgress >= step)
|
|
||||||
{
|
{
|
||||||
return "green"
|
return "green"
|
||||||
|
} else if (order.shippingProgress + 1 == step)
|
||||||
|
{
|
||||||
|
return "blue"
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
return "grey"
|
return "grey"
|
||||||
@@ -32,7 +32,7 @@ function formatDateTimeString(string: string) {
|
|||||||
:title="$t('orders.orderFrom') + ' ' + formatDateTimeString(order.createdAt) + ' ' + $t('oclock')"
|
:title="$t('orders.orderFrom') + ' ' + formatDateTimeString(order.createdAt) + ' ' + $t('oclock')"
|
||||||
:subtitle="$t('totalPrice') + ': ' + order.totalPrice + ' €'"
|
:subtitle="$t('totalPrice') + ': ' + order.totalPrice + ' €'"
|
||||||
>
|
>
|
||||||
<v-timeline direction="horizontal" side="start">
|
<v-timeline direction="horizontal" side="start" size="x-large">
|
||||||
<v-timeline-item :dot-color="getDotColor(order, 1)" icon="mdi-basket-check">
|
<v-timeline-item :dot-color="getDotColor(order, 1)" icon="mdi-basket-check">
|
||||||
{{ $t('orders.ordered') }}
|
{{ $t('orders.ordered') }}
|
||||||
</v-timeline-item>
|
</v-timeline-item>
|
||||||
@@ -41,11 +41,15 @@ function formatDateTimeString(string: string) {
|
|||||||
{{ $t('orders.preparingForShipping') }}
|
{{ $t('orders.preparingForShipping') }}
|
||||||
</v-timeline-item>
|
</v-timeline-item>
|
||||||
|
|
||||||
<v-timeline-item :dot-color="getDotColor(order, 3)" icon="mdi-truck-fast">
|
<v-timeline-item :dot-color="getDotColor(order, 3)" icon="mdi-send">
|
||||||
{{ $t('orders.shipped') }}
|
{{ $t('orders.shipped') }}
|
||||||
</v-timeline-item>
|
</v-timeline-item>
|
||||||
|
|
||||||
<v-timeline-item :dot-color="getDotColor(order, 4)" icon="mdi-package-check">
|
<v-timeline-item :dot-color="getDotColor(order, 4)" icon="mdi-truck-fast">
|
||||||
|
{{ $t('orders.inDelivery') }}
|
||||||
|
</v-timeline-item>
|
||||||
|
|
||||||
|
<v-timeline-item :dot-color="getDotColor(order, 5)" icon="mdi-package-check">
|
||||||
{{ $t('orders.delivered') }}
|
{{ $t('orders.delivered') }}
|
||||||
</v-timeline-item>
|
</v-timeline-item>
|
||||||
</v-timeline>
|
</v-timeline>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { BannerStateEnum } from '@/data/enums/bannerStateEnum';
|
|||||||
import { useFeedbackStore } from '@/data/stores/feedbackStore';
|
import { useFeedbackStore } from '@/data/stores/feedbackStore';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import cardView from '@/components/cardView.vue';
|
import cardView from '@/components/cardView.vue';
|
||||||
import actionDialog from '@/components/actionDialog.vue';
|
import outlinedButton from '@/components/outlinedButton.vue';
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import confirmDialog from '@/components/confirmDialog.vue';
|
import confirmDialog from '@/components/confirmDialog.vue';
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ function resetDb() {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
confirmDialog.value = false
|
showConfirmDialog.value = false
|
||||||
// todo: Request all data
|
// todo: Request all data
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,24 +32,21 @@ function resetSettings() {
|
|||||||
<v-container>
|
<v-container>
|
||||||
<v-row>
|
<v-row>
|
||||||
<v-col class="d-flex justify-center align-center">
|
<v-col class="d-flex justify-center align-center">
|
||||||
<v-btn
|
<outlined-button
|
||||||
@click="showConfirmDialog = true"
|
@click="showConfirmDialog = true"
|
||||||
prepend-icon="mdi-database-refresh"
|
prepend-icon="mdi-database-refresh"
|
||||||
color="red"
|
color="red"
|
||||||
variant="outlined"
|
|
||||||
>
|
>
|
||||||
{{ $t('preferences.resetDatabase') }}
|
{{ $t('preferences.resetDatabase') }}
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
</v-col>
|
</v-col>
|
||||||
<v-col class="d-flex justify-center align-center">
|
<v-col class="d-flex justify-center align-center">
|
||||||
<v-btn
|
<outlined-button
|
||||||
@click="resetDb"
|
@click="resetSettings"
|
||||||
prepend-icon="mdi-cog-counterclockwise"
|
prepend-icon="mdi-cog-counterclockwise"
|
||||||
color="primary"
|
|
||||||
variant="outlined"
|
|
||||||
>
|
>
|
||||||
{{ $t('preferences.resetPreferences') }}
|
{{ $t('preferences.resetPreferences') }}
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
</v-col>
|
</v-col>
|
||||||
</v-row>
|
</v-row>
|
||||||
</v-container>
|
</v-container>
|
||||||
@@ -59,5 +56,6 @@ function resetSettings() {
|
|||||||
:title="$t('dialog.resetConfirm.title')"
|
:title="$t('dialog.resetConfirm.title')"
|
||||||
:description="$t('dialog.resetConfirm.description')"
|
:description="$t('dialog.resetConfirm.description')"
|
||||||
v-model="showConfirmDialog"
|
v-model="showConfirmDialog"
|
||||||
|
:onConfirm="resetDb"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
@@ -5,7 +5,7 @@ import { useBasketStore } from '@/data/stores/basketStore';
|
|||||||
import { calcProductPrice, productToBasketItem } from '@/scripts/productScripts';
|
import { calcProductPrice, productToBasketItem } from '@/scripts/productScripts';
|
||||||
import ActionDialog from '@/components/actionDialog.vue'
|
import ActionDialog from '@/components/actionDialog.vue'
|
||||||
import { ProductWithCategoryModel } from '@/data/models/productWithCategoryModel';
|
import { ProductWithCategoryModel } from '@/data/models/productWithCategoryModel';
|
||||||
import { BasketItemModel } from '@/data/models/basketItemModel';
|
import outlinedButton from '@/components/outlinedButton.vue';
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
product: {
|
product: {
|
||||||
@@ -20,9 +20,6 @@ const basketStore = useBasketStore()
|
|||||||
const selectedImage = ref("")
|
const selectedImage = ref("")
|
||||||
|
|
||||||
function addProductToBasket() {
|
function addProductToBasket() {
|
||||||
basketStore.addItemToBasket(
|
|
||||||
new BasketItemModel()
|
|
||||||
)
|
|
||||||
basketStore.addItemToBasket(productToBasketItem(props.product, nrOfArticles.value))
|
basketStore.addItemToBasket(productToBasketItem(props.product, nrOfArticles.value))
|
||||||
nrOfArticles.value = 1
|
nrOfArticles.value = 1
|
||||||
showDialog.value = false
|
showDialog.value = false
|
||||||
@@ -67,7 +64,6 @@ watch(() => props.product.images, () => {
|
|||||||
|
|
||||||
<v-spacer />
|
<v-spacer />
|
||||||
</v-row>
|
</v-row>
|
||||||
|
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
|
|
||||||
@@ -154,16 +150,14 @@ watch(() => props.product.images, () => {
|
|||||||
:disabled="product.storedItems == 0"
|
:disabled="product.storedItems == 0"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<v-btn
|
<outlined-button
|
||||||
prepend-icon="mdi-cart-plus"
|
prepend-icon="mdi-cart-plus"
|
||||||
@click="addProductToBasket"
|
@click="addProductToBasket"
|
||||||
color="primary"
|
|
||||||
variant="outlined"
|
|
||||||
height="50"
|
height="50"
|
||||||
:disabled="product.storedItems == 0"
|
:disabled="product.storedItems == 0"
|
||||||
>
|
>
|
||||||
{{ $t('addToBasket') }}
|
{{ $t('addToBasket') }}
|
||||||
</v-btn>
|
</outlined-button>
|
||||||
</template>
|
</template>
|
||||||
</action-dialog>
|
</action-dialog>
|
||||||
</template>
|
</template>
|
||||||
Reference in New Issue
Block a user