diff --git a/.github/workflows/audit-release.yml b/.github/workflows/audit-release.yml new file mode 100644 index 0000000..aba36e8 --- /dev/null +++ b/.github/workflows/audit-release.yml @@ -0,0 +1,40 @@ +on: + release: + types: [published] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +name: Publish Audit Server Docker image + +jobs: + push_to_registry: + name: Push Docker image to GitHub Packages + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Check out the repo + uses: actions/checkout@v3 + - name: PrepareReg Names + run: | + echo IMAGE_REPOSITORY=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV + + - name: Log in to GitHub Docker Registry + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + registry: docker.pkg.github.com + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + with: + context: audit + push: true + tags: | + docker.pkg.github.com/${{ env.IMAGE_REPOSITORY }}/audit:${{ github.sha }} + docker.pkg.github.com/${{ env.IMAGE_REPOSITORY }}/audit:${{ github.event.release.tag_name }} + docker.pkg.github.com/${{ env.IMAGE_REPOSITORY }}/audit:latest \ No newline at end of file diff --git a/.github/workflows/transaction-release .yml b/.github/workflows/transaction-release .yml new file mode 100644 index 0000000..a5db55b --- /dev/null +++ b/.github/workflows/transaction-release .yml @@ -0,0 +1,40 @@ +on: + release: + types: [published] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +name: Publish Transaction Server Docker image + +jobs: + push_to_registry: + name: Push Docker image to GitHub Packages + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - name: Check out the repo + uses: actions/checkout@v3 + - name: PrepareReg Names + run: | + echo IMAGE_REPOSITORY=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV + + - name: Log in to GitHub Docker Registry + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + registry: docker.pkg.github.com + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker image + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + with: + context: transaction + push: true + tags: | + docker.pkg.github.com/${{ env.IMAGE_REPOSITORY }}/transaction:${{ github.sha }} + docker.pkg.github.com/${{ env.IMAGE_REPOSITORY }}/transaction:${{ github.event.release.tag_name }} + docker.pkg.github.com/${{ env.IMAGE_REPOSITORY }}/transaction:latest \ No newline at end of file diff --git a/audit/Dockerfile b/audit/Dockerfile index 3e645ef..bb3bfd3 100644 --- a/audit/Dockerfile +++ b/audit/Dockerfile @@ -8,9 +8,7 @@ COPY . . RUN npm install RUN npx prisma generate -RUN npm run build - EXPOSE 50051 -CMD ["npm", "run", "docker"] \ No newline at end of file +CMD npx prisma db push && npm run dev \ No newline at end of file diff --git a/audit/cmd.sh b/audit/cmd.sh deleted file mode 100644 index a680392..0000000 --- a/audit/cmd.sh +++ /dev/null @@ -1,4 +0,0 @@ -npx prisma db push; -npx prisma migrate deploy; -npx prisma db seed; -npm start; \ No newline at end of file diff --git a/audit/docker-compose.yml b/audit/docker-compose.yml index c2f3b27..3076a7a 100644 --- a/audit/docker-compose.yml +++ b/audit/docker-compose.yml @@ -2,7 +2,7 @@ version: "3.9" services: postgres: image: postgres:latest - container_name: logDB + container_name: auditDB hostname: postgres ports: - 5432:5432 @@ -11,11 +11,11 @@ services: POSTGRES_PASSWORD: "postgrespw" POSTGRES_DB: "devdb" volumes: - - logDB-data:/var/lib/postgresql/data + - auditDB-data:/var/lib/postgresql/data restart: unless-stopped - transactionserver: - image: transactionserver - container_name: transactionService + auditserver: + image: auditserver + container_name: auditService build: "./" ports: - 50051:50051 @@ -26,4 +26,4 @@ services: restart: unless-stopped volumes: - logDB-data: \ No newline at end of file + auditDB-data: \ No newline at end of file diff --git a/audit/package-lock.json b/audit/package-lock.json index 8b61837..42c3627 100644 --- a/audit/package-lock.json +++ b/audit/package-lock.json @@ -9,9 +9,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@grpc/grpc-js": "^1.8.11", + "@grpc/grpc-js": "latest", + "@grpc/proto-loader": "latest", "@prisma/client": "^4.9.0", - "google-protobuf": "^3.21.2" + "@types/winston": "^2.4.4", + "winston": "^3.8.2", + "xmlbuilder2": "^3.0.2" }, "devDependencies": { "@types/node": "^18.11.19", @@ -22,6 +25,14 @@ "typescript": "^4.9.5" } }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -34,6 +45,16 @@ "node": ">=12" } }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "node_modules/@grpc/grpc-js": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.11.tgz", @@ -109,6 +130,50 @@ "node-pre-gyp": "bin/node-pre-gyp" } }, + "node_modules/@oozcitak/dom": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", + "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", + "dependencies": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/url": "1.0.4", + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@oozcitak/infra": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", + "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", + "dependencies": { + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@oozcitak/url": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", + "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", + "dependencies": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@oozcitak/util": { + "version": "8.3.8", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", + "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==", + "engines": { + "node": ">=8.0" + } + }, "node_modules/@prisma/client": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.10.1.tgz", @@ -229,6 +294,20 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==" }, + "node_modules/@types/triple-beam": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", + "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" + }, + "node_modules/@types/winston": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/winston/-/winston-2.4.4.tgz", + "integrity": "sha512-BVGCztsypW8EYwJ+Hq+QNYiT/MUyCif0ouBH+flrY66O5W+KIXAMML6E/0fJpm7VjIzgangahl5S03bJJQGrZw==", + "deprecated": "This is a stub types definition. winston provides its own type definitions, so you do not need this installed.", + "dependencies": { + "winston": "*" + } + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -328,6 +407,19 @@ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -411,6 +503,15 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -427,6 +528,15 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -436,6 +546,28 @@ "color-support": "bin.js" } }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -500,6 +632,11 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -508,6 +645,23 @@ "node": ">=6" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -520,6 +674,11 @@ "node": ">=8" } }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -624,11 +783,6 @@ "node": ">= 6" } }, - "node_modules/google-protobuf": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" - }, "node_modules/grpc-tools": { "version": "1.12.4", "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.12.4.tgz", @@ -690,8 +844,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/is-binary-path": { "version": "2.1.0", @@ -743,11 +901,52 @@ "node": ">=0.12.0" } }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, + "node_modules/logform": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "dependencies": { + "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, "node_modules/long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -856,8 +1055,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/node-fetch": { "version": "2.6.9", @@ -979,6 +1177,14 @@ "wrappy": "1" } }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -1055,7 +1261,6 @@ "version": "3.6.1", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -1104,7 +1309,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -1120,6 +1324,14 @@ } ] }, + "node_modules/safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "engines": { + "node": ">=10" + } + }, "node_modules/semver": { "version": "7.3.8", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", @@ -1147,6 +1359,14 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -1168,11 +1388,23 @@ "semver": "bin/semver.js" } }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -1230,6 +1462,11 @@ "node": ">=10" } }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1275,6 +1512,11 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, + "node_modules/triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -1340,8 +1582,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", @@ -1374,6 +1615,40 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "node_modules/winston": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", + "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", + "dependencies": { + "@colors/colors": "1.5.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "dependencies": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 6.4.0" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -1396,6 +1671,21 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/xmlbuilder2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz", + "integrity": "sha512-h4MUawGY21CTdhV4xm3DG9dgsqyhDkZvVJBx88beqX8wJs3VgyGQgAn5VreHuae6unTQxh115aMK5InCVmOIKw==", + "dependencies": { + "@oozcitak/dom": "1.15.10", + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8", + "@types/node": "*", + "js-yaml": "3.14.0" + }, + "engines": { + "node": ">=12.0" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -1446,6 +1736,11 @@ } }, "dependencies": { + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==" + }, "@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -1455,6 +1750,16 @@ "@jridgewell/trace-mapping": "0.3.9" } }, + "@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "requires": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, "@grpc/grpc-js": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.11.tgz", @@ -1515,6 +1820,38 @@ "tar": "^6.1.11" } }, + "@oozcitak/dom": { + "version": "1.15.10", + "resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz", + "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==", + "requires": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/url": "1.0.4", + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/infra": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz", + "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==", + "requires": { + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/url": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz", + "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==", + "requires": { + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8" + } + }, + "@oozcitak/util": { + "version": "8.3.8", + "resolved": "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz", + "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==" + }, "@prisma/client": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/@prisma/client/-/client-4.10.1.tgz", @@ -1622,6 +1959,19 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.0.tgz", "integrity": "sha512-5EWrvLmglK+imbCJY0+INViFWUHg1AHel1sq4ZVSfdcNqGy9Edv3UB9IIzzg+xPaUcAgZYcfVs2fBcwDeZzU0A==" }, + "@types/triple-beam": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", + "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" + }, + "@types/winston": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/winston/-/winston-2.4.4.tgz", + "integrity": "sha512-BVGCztsypW8EYwJ+Hq+QNYiT/MUyCif0ouBH+flrY66O5W+KIXAMML6E/0fJpm7VjIzgangahl5S03bJJQGrZw==", + "requires": { + "winston": "*" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1694,6 +2044,19 @@ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1757,6 +2120,30 @@ "wrap-ansi": "^7.0.0" } }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + } + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1770,12 +2157,30 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true }, + "colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "requires": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -1826,11 +2231,26 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, + "enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -1840,6 +2260,11 @@ "to-regex-range": "^5.0.1" } }, + "fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -1918,11 +2343,6 @@ "is-glob": "^4.0.1" } }, - "google-protobuf": { - "version": "3.21.2", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", - "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" - }, "grpc-tools": { "version": "1.12.4", "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.12.4.tgz", @@ -1973,8 +2393,12 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "is-binary-path": { "version": "2.1.0", @@ -2011,11 +2435,43 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" }, + "logform": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", + "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "requires": { + "@colors/colors": "1.5.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + } + }, "long": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", @@ -2098,8 +2554,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node-fetch": { "version": "2.6.9", @@ -2187,6 +2642,14 @@ "wrappy": "1" } }, + "one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "requires": { + "fn.name": "1.x.x" + } + }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -2244,7 +2707,6 @@ "version": "3.6.1", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -2277,8 +2739,12 @@ "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, + "safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==" }, "semver": { "version": "7.3.8", @@ -2301,6 +2767,14 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "requires": { + "is-arrayish": "^0.3.1" + } + }, "simple-update-notifier": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", @@ -2318,11 +2792,20 @@ } } }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==" + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, "requires": { "safe-buffer": "~5.2.0" } @@ -2368,6 +2851,11 @@ "yallist": "^4.0.0" } }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2403,6 +2891,11 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + }, "ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -2439,8 +2932,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "v8-compile-cache-lib": { "version": "3.0.1", @@ -2473,6 +2965,34 @@ "string-width": "^1.0.2 || 2 || 3 || 4" } }, + "winston": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.8.2.tgz", + "integrity": "sha512-MsE1gRx1m5jdTTO9Ld/vND4krP2To+lgDoMEHGGa4HIlAUyXJtfc7CxQcGXVyz2IBpw5hbFkj2b/AtUdQwyRew==", + "requires": { + "@colors/colors": "1.5.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.4.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.5.0" + } + }, + "winston-transport": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", + "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "requires": { + "logform": "^2.3.2", + "readable-stream": "^3.6.0", + "triple-beam": "^1.3.0" + } + }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -2489,6 +3009,18 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "xmlbuilder2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz", + "integrity": "sha512-h4MUawGY21CTdhV4xm3DG9dgsqyhDkZvVJBx88beqX8wJs3VgyGQgAn5VreHuae6unTQxh115aMK5InCVmOIKw==", + "requires": { + "@oozcitak/dom": "1.15.10", + "@oozcitak/infra": "1.0.8", + "@oozcitak/util": "8.3.8", + "@types/node": "*", + "js-yaml": "3.14.0" + } + }, "y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/audit/package.json b/audit/package.json index 7514a20..509c004 100644 --- a/audit/package.json +++ b/audit/package.json @@ -13,7 +13,8 @@ "build": "tsc", "dev": "nodemon src/index.ts", "docker": "chmod +x ./cmd.sh; ./cmd.sh", - "start": "node dist/src/index.js" + "start": "node dist/src/index.js", + "gen-grpc-types": "npx proto-loader-gen-types --grpcLib=@grpc/grpc-js --outDir=src/proto/ ../protos/day-trader.proto && cp ../protos/day-trader.proto src/proto/day-trader-copy.proto" }, "keywords": [], "author": "", @@ -27,9 +28,12 @@ "typescript": "^4.9.5" }, "dependencies": { - "@grpc/grpc-js": "^1.8.11", + "@grpc/grpc-js": "latest", + "@grpc/proto-loader": "latest", "@prisma/client": "^4.9.0", - "google-protobuf": "^3.21.2" + "@types/winston": "^2.4.4", + "winston": "^3.8.2", + "xmlbuilder2": "^3.0.2" }, "prisma": { "seed": "ts-node prisma/seed.ts" diff --git a/audit/prisma/dummy_data/AccountTransactions.ts b/audit/prisma/dummy_data/AccountTransactions.ts new file mode 100644 index 0000000..5446301 --- /dev/null +++ b/audit/prisma/dummy_data/AccountTransactions.ts @@ -0,0 +1,107 @@ +export const AccountTransactions = [ + { + timestamp: 1167631200200, + server: "CLT2", + action: "add", + username: "jiosesdo", + funds: 100, + }, + { + timestamp: 1167631204000, + server: "CLT2", + action: "remove", + username: "jiosesdo", + funds: 100, + }, + { + timestamp: 1167631205000, + server: "CLT1", + action: "add", + username: "skelsioe", + funds: 1000, + }, + { + timestamp: 1167631206000, + server: "CLT1", + action: "remove", + username: "skelsioe", + funds: 500, + }, + { + timestamp: 1167631207000, + server: "CLT2", + action: "add", + username: "bob", + funds: 500, + }, + { + timestamp: 1167631208000, + server: "CLT2", + action: "remove", + username: "bob", + funds: 100, + }, + { + timestamp: 1167631209000, + server: "CLT1", + action: "add", + username: "sam", + funds: 5000, + }, + { + timestamp: 1167631210000, + server: "CLT1", + action: "remove", + username: "sam", + funds: 2000, + }, + { + timestamp: 1167631211000, + server: "CLT2", + action: "add", + username: "alice", + funds: 200, + }, + { + timestamp: 1167631212000, + server: "CLT2", + action: "remove", + username: "alice", + funds: 100, + }, + { + timestamp: 1167631213000, + server: "CLT1", + action: "add", + username: "jane", + funds: 1000, + }, + { + timestamp: 1167631214000, + server: "CLT1", + action: "remove", + username: "jane", + funds: 500, + }, + { + timestamp: 1167631215000, + server: "CLT2", + action: "add", + username: "max", + funds: 10000, + }, + { + timestamp: 1167631216000, + server: "CLT2", + action: "remove", + username: "max", + funds: 5000, + }, + { + timestamp: 1167631217000, + server: "CLT1", + action: "add", + username: "john", + funds: 2500, + }, +]; diff --git a/audit/prisma/dummy_data/ErrorEvents.ts b/audit/prisma/dummy_data/ErrorEvents.ts new file mode 100644 index 0000000..5d5cf67 --- /dev/null +++ b/audit/prisma/dummy_data/ErrorEvents.ts @@ -0,0 +1,110 @@ +export const ErrorEvents = [ + { + timestamp: 1167631206000, + server: "CLT2", + command: "SELL", + username: "bob", + stockSymbol: "GHI", + funds: 1000, + errorMessage: "Account bob does not exist", + }, + { + timestamp: 1167631207000, + server: "CLT1", + command: "BUY", + username: "alice", + stockSymbol: "ABC", + funds: 2000, + errorMessage: "Insufficient funds for alice", + }, + { + timestamp: 1167631208000, + server: "CLT2", + command: "SELL", + username: "john", + stockSymbol: "DEF", + funds: 3000, + errorMessage: "Account john is suspended", + }, + { + timestamp: 1167631209000, + server: "CLT1", + command: "BUY", + username: "peter", + stockSymbol: "GHI", + funds: 4000, + errorMessage: "Invalid stock symbol", + }, + { + timestamp: 1167631210000, + server: "CLT2", + command: "SELL", + username: "lisa", + stockSymbol: "XYZ", + funds: 5000, + errorMessage: "Account lisa has exceeded the transaction limit", + }, + { + timestamp: 1167631211000, + server: "CLT1", + command: "BUY", + username: "will", + stockSymbol: "ABC", + funds: 6000, + errorMessage: "Account will is blocked", + }, + { + timestamp: 1167631212000, + server: "CLT2", + command: "SELL", + username: "david", + stockSymbol: "DEF", + funds: 7000, + errorMessage: "Account david has been deleted", + }, + { + timestamp: 1167631213000, + server: "CLT1", + command: "BUY", + username: "emily", + stockSymbol: "GHI", + funds: 8000, + errorMessage: "Account emily has no funds", + }, + { + timestamp: 1167631214000, + server: "CLT2", + command: "SELL", + username: "mike", + stockSymbol: "XYZ", + funds: 9000, + errorMessage: "Account mike has been blocked", + }, + { + timestamp: 1167631215000, + server: "CLT1", + command: "BUY", + username: "olivia", + stockSymbol: "ABC", + funds: 10000, + errorMessage: "Account olivia is expired", + }, + { + timestamp: 1167631216000, + server: "CLT2", + command: "SELL", + username: "sam", + stockSymbol: "DEF", + funds: 11000, + errorMessage: "Account sam has exceeded the balance limit", + }, + { + timestamp: 1167631217000, + server: "CLT1", + command: "BUY", + username: "jane", + stockSymbol: "GHI", + funds: 12000, + errorMessage: "Invalid username", + }, +] \ No newline at end of file diff --git a/audit/prisma/dummy_data/Logs.ts b/audit/prisma/dummy_data/Logs.ts deleted file mode 100644 index 920fc14..0000000 --- a/audit/prisma/dummy_data/Logs.ts +++ /dev/null @@ -1,90 +0,0 @@ -export const Logs = [ - { - action: "BUY", - user: "john", - amount: 2514.15, - stock: "ABC", - shareprice: 2514.15, - shares_bought: 1, - }, - { - action: "SELL", - user: "jane", - amount: 1269.37, - stock: "XYZ", - shareprice: 63.47, - shares_bought: 20, - }, - { - action: "BUY", - user: "sam", - amount: 712.19, - stock: "DEF", - shareprice: 356.09, - shares_bought: 2, - }, - { - action: "SELL", - user: "alice", - amount: 435.22, - stock: "MNO", - shareprice: 21.76, - shares_bought: 20, - }, - { - action: "BUY", - user: "bob", - amount: 987.65, - stock: "PQR", - shareprice: 123.46, - shares_bought: 8, - }, - { - action: "SELL", - user: "emily", - amount: 2543.21, - stock: "GHI", - shareprice: 127.16, - shares_bought: 20, - }, - { - action: "BUY", - user: "dave", - amount: 842.56, - stock: "JKL", - shareprice: 42.13, - shares_bought: 20, - }, - { - action: "SELL", - user: "sarah", - amount: 117.89, - stock: "TUV", - shareprice: 11.79, - shares_bought: 10, - }, - { - action: "BUY", - user: "tom", - amount: 634.27, - stock: "STU", - shareprice: 158.57, - shares_bought: 4, - }, - { - action: "SELL", - user: "mike", - amount: 2080.34, - stock: "NOP", - shareprice: 115.57, - shares_bought: 18, - }, - { - action: "BUY", - user: "lisa", - amount: 423.08, - stock: "VWX", - shareprice: 47.01, - shares_bought: 9, - }, -]; diff --git a/audit/prisma/dummy_data/QuoteServers.ts b/audit/prisma/dummy_data/QuoteServers.ts new file mode 100644 index 0000000..32ac388 --- /dev/null +++ b/audit/prisma/dummy_data/QuoteServers.ts @@ -0,0 +1,65 @@ +export const QuoteServers = [ + { + timestamp: 1167631203000, + server: "QSRV1", + quoteServerTime: 1167631203000, + username: "jiosesdo", + stockSymbol: "ABC", + price: 10, + cryptokey: "IRrR7UeTO35kSWUgG0QJKmB35sL27FKM7AVhP5qpjCgmWQeXFJs35g==", + }, + { + timestamp: 1167631204000, + server: "QSRV2", + quoteServerTime: 1167631204000, + username: "skelsioe", + stockSymbol: "DEF", + price: 20, + cryptokey: "DGNfZ0ei7V67FESoZS7Vrq1wWXm1opV2CEzO4O4oL4m/WxP/8C/3tQ==", + }, + { + timestamp: 1167631205000, + server: "QSRV1", + quoteServerTime: 1167631205000, + username: "bob", + stockSymbol: "GHI", + price: 30, + cryptokey: "eM3+vaxw5SXQ8g/z5n5v5LdXHPEuhR5jsLMN+b/0v67yH/0wKwR8GQ==", + }, + { + timestamp: 1167631206000, + server: "QSRV2", + quoteServerTime: 1167631206000, + username: "sam", + stockSymbol: "XYZ", + price: 40, + cryptokey: "sl1fZ0ei7V67FESoZS7Vrq1wWXm1opV2CEzO4O4oL4m/WxP/8C/3tQ==", + }, + { + timestamp: 1167631207000, + server: "QSRV1", + quoteServerTime: 1167631207000, + username: "alice", + stockSymbol: "ABC", + price: 50, + cryptokey: "sk0fZ0ei7V67FESoZS7Vrq1wWXm1opV2CEzO4O4oL4m/WxP/8C/3tQ==", + }, + { + timestamp: 1167631208000, + server: "QSRV2", + quoteServerTime: 1167631208000, + username: "jane", + stockSymbol: "DEF", + price: 60, + cryptokey: "IRrR7UeTO35kSWUgG0QJKmB35sL27FKM7AVhP5qpjCgmWQeXFJs35g==", + }, + { + timestamp: 1167631209000, + server: "QSRV1", + quoteServerTime: 1167631209000, + username: "john", + stockSymbol: "GHI", + price: 70, + cryptokey: "DGNfZ0ei7V67FESoZS7Vrq1wWXm1opV2CEzO4O4oL4m/WxP/8C/3tQ==", + }, +]; diff --git a/audit/prisma/dummy_data/SystemEvents.ts b/audit/prisma/dummy_data/SystemEvents.ts new file mode 100644 index 0000000..3938781 --- /dev/null +++ b/audit/prisma/dummy_data/SystemEvents.ts @@ -0,0 +1,123 @@ +export const SystemEvents = [ + { + timestamp: 1167631202000, + server: "HSD1", + command: "BUY", + username: "jiosesdo", + stockSymbol: "ABC", + funds: 100, + }, + { + timestamp: 1167631203000, + server: "HSD2", + command: "SELL", + username: "skelsioe", + stockSymbol: "DEF", + funds: 200, + }, + { + timestamp: 1167631204000, + server: "HSD1", + command: "BUY", + username: "bob", + stockSymbol: "GHI", + funds: 300, + }, + { + timestamp: 1167631205000, + server: "HSD2", + command: "SELL", + username: "sam", + stockSymbol: "XYZ", + funds: 400, + }, + { + timestamp: 1167631206000, + server: "HSD1", + command: "BUY", + username: "alice", + stockSymbol: "ABC", + funds: 500, + }, + { + timestamp: 1167631207000, + server: "HSD2", + command: "SELL", + username: "jane", + stockSymbol: "DEF", + funds: 600, + }, + { + timestamp: 1167631208000, + server: "HSD1", + command: "BUY", + username: "john", + stockSymbol: "GHI", + funds: 700, + }, + { + timestamp: 1167631209000, + server: "HSD2", + command: "SELL", + username: "max", + stockSymbol: "XYZ", + funds: 800, + }, + { + timestamp: 1167631210000, + server: "HSD1", + command: "BUY", + username: "peter", + stockSymbol: "ABC", + funds: 900, + }, + { + timestamp: 1167631211000, + server: "HSD2", + command: "SELL", + username: "lisa", + stockSymbol: "DEF", + funds: 1000, + }, + { + timestamp: 1167631212000, + server: "HSD1", + command: "BUY", + username: "will", + stockSymbol: "GHI", + funds: 1100, + }, + { + timestamp: 1167631213000, + server: "HSD2", + command: "SELL", + username: "david", + stockSymbol: "XYZ", + funds: 1200, + }, + { + timestamp: 1167631214000, + server: "HSD1", + command: "BUY", + username: "emily", + stockSymbol: "ABC", + funds: 1300, + }, + { + timestamp: 1167631215000, + server: "HSD2", + command: "SELL", + username: "mike", + stockSymbol: "DEF", + funds: 1400, + }, + { + timestamp: 1167631216000, + server: "HSD1", + command: "BUY", + username: "olivia", + stockSymbol: "GHI", + funds: 1500, + }, + ]; + \ No newline at end of file diff --git a/audit/prisma/dummy_data/UserCommands.ts b/audit/prisma/dummy_data/UserCommands.ts new file mode 100644 index 0000000..63242fc --- /dev/null +++ b/audit/prisma/dummy_data/UserCommands.ts @@ -0,0 +1,109 @@ +export const UserCommands = [ + { + "timestamp": 1167631200000, + "server": "CLT1", + "command": "ADD", + "username": "jiosesdo", + "funds": 100 + }, + { + "timestamp": 1167631201000, + "server": "CLT1", + "command": "BUY", + "username": "jiosesdo", + "stockSymbol": "ABC", + "funds": 100 + }, + { + "timestamp": 1167631205000, + "server": "CLT2", + "command": "BUY", + "username": "skelsioe", + "stockSymbol": "DEF", + "funds": 1000 + }, + { + "timestamp": 1167631205200, + "server": "CLT2", + "command": "SELL", + "username": "bob", + "stockSymbol": "GHI", + "funds": 1000 + }, + { + "timestamp": 1167631206000, + "server": "CLT1", + "command": "ADD", + "username": "sam", + "funds": 200 + }, + { + "timestamp": 1167631207000, + "server": "CLT2", + "command": "BUY", + "username": "sam", + "stockSymbol": "XYZ", + "funds": 200 + }, + { + "timestamp": 1167631208000, + "server": "CLT1", + "command": "SELL", + "username": "sam", + "stockSymbol": "ABC", + "funds": 200 + }, + { + "timestamp": 1167631209000, + "server": "CLT2", + "command": "ADD", + "username": "alice", + "funds": 500 + }, + { + "timestamp": 1167631210000, + "server": "CLT1", + "command": "BUY", + "username": "alice", + "stockSymbol": "DEF", + "funds": 500 + }, + { + "timestamp": 1167631211000, + "server": "CLT2", + "command": "SELL", + "username": "alice", + "stockSymbol": "XYZ", + "funds": 500 + }, + { + "timestamp": 1167631212000, + "server": "CLT1", + "command": "ADD", + "username": "jane", + "funds": 1000 + }, + { + "timestamp": 1167631213000, + "server": "CLT2", + "command": "BUY", + "username": "jane", + "stockSymbol": "GHI", + "funds": 1000 + }, + { + "timestamp": 1167631214000, + "server": "CLT1", + "command": "SELL", + "username": "jane", + "stockSymbol": "ABC", + "funds": 1000 + }, + { + "timestamp": 1167631215000, + "server": "CLT2", + "command": "ADD", + "username": "max", + "funds": 5000 + }, +] \ No newline at end of file diff --git a/audit/prisma/schema.prisma b/audit/prisma/schema.prisma index e50a98c..c3985ac 100644 --- a/audit/prisma/schema.prisma +++ b/audit/prisma/schema.prisma @@ -7,16 +7,57 @@ generator client { datasource db { provider = "postgresql" - url = "postgresql://admin:postgrespw@localhost:5432/devdb?schema=public" + url = "postgresql://admin:postgrespw@auditDB:5432/devdb?schema=public" // for docker-deployment + // url = "postgresql://admin:postgrespw@localhost:5432/devdb?schema=public" // for npm run dev } -model Log { - id Int @id @default(autoincrement()) - datetime DateTime @default(now()) - action String - user String - stock String - amount Float? - shareprice Float? - shares_bought Int? +model UserCommand { + transactionNum Int @id @default(autoincrement()) + timestamp BigInt //Will have to convert current date to unix: const unixTimestamp = new Date().getTime(); + server String + command String //"ADD", "BUY", "SELL", etc + username String + stockSymbol String? + funds Float //funds of the user } + +model accountTransaction { + transactionNum Int @id @default(autoincrement()) + timestamp BigInt + server String + action String //"add", "remove", etc + username String + funds Float +} + +model systemEvent { + transactionNum Int @id @default(autoincrement()) + timestamp BigInt + server String + command String + username String + stockSymbol String + funds Float +} + +model quoteServer { + transactionNum Int @id @default(autoincrement()) + timestamp BigInt + server String + quoteServerTime BigInt + username String + stockSymbol String + price Float + cryptokey String +} + +model errorEvent { + transactionNum Int @id @default(autoincrement()) + timestamp BigInt + server String + command String + username String + stockSymbol String + funds Float + errorMessage String +} \ No newline at end of file diff --git a/audit/prisma/seed.ts b/audit/prisma/seed.ts index 72e0f82..272ef68 100644 --- a/audit/prisma/seed.ts +++ b/audit/prisma/seed.ts @@ -1,25 +1,54 @@ import { PrismaClient } from '@prisma/client' -import { Logs } from './dummy_data/Logs'; +import { UserCommands } from './dummy_data/UserCommands'; +import { AccountTransactions } from './dummy_data/AccountTransactions'; +import { SystemEvents } from './dummy_data/SystemEvents'; +import { QuoteServers } from './dummy_data/QuoteServers'; +import { ErrorEvents } from './dummy_data/ErrorEvents'; const prisma = new PrismaClient(); -async function main(){ - - const check = await prisma.log.findMany(); - if(check.length !== 0){ - console.log("DB Already Seeded"); - return; - } - - console.log("Beginning Seeding"); +async function main() { + + const check = await prisma.userCommand.findMany(); + if (check.length !== 0) { + console.log("DB Already Seeded"); + return; + } - console.log("Seeding Logs..."); - for(const log of Logs){ - console.log("Seeding log", log); - await prisma.log.create({ - data: log - }); - } + console.log("Beginning Seeding"); + + console.log("Seeding Logs..."); + for(const userCommand of UserCommands){ + console.log("Seeding UserCommands",UserCommands.indexOf(userCommand)) + await prisma.userCommand.create({ + data: userCommand + }); + } + for(const accountTransaction of AccountTransactions){ + console.log("Seeding AccountTransactions",AccountTransactions.indexOf(accountTransaction)) + await prisma.accountTransaction.create({ + data: accountTransaction + }); + } + for(const systemEvent of SystemEvents){ + console.log("Seeding SystemEvents",SystemEvents.indexOf(systemEvent)) + await prisma.systemEvent.create({ + data: systemEvent + }); + } + for(const quoteServer of QuoteServers){ + console.log("Seeding QuoteServers",QuoteServers.indexOf(quoteServer)) + await prisma.quoteServer.create({ + data: quoteServer + }); + } + for(const errorEvent of ErrorEvents){ + console.log("Seeding ErrorEvents",ErrorEvents.indexOf(errorEvent)) + await prisma.errorEvent.create({ + data: errorEvent + }); + } + } diff --git a/audit/src/Log.ts b/audit/src/Log.ts new file mode 100644 index 0000000..f566d20 --- /dev/null +++ b/audit/src/Log.ts @@ -0,0 +1,174 @@ +import { PrismaClient } from "@prisma/client"; +import { LogHandlers } from "./proto/day_trader/Log"; +import { create as createXmlBuilder } from 'xmlbuilder2'; +import { Status } from "@grpc/grpc-js/build/src/constants"; + +const prisma = new PrismaClient(); + +const DisplaySummary: LogHandlers['DisplaySummary'] = async (call, callback) => { + const userCommands = await prisma.userCommand.findMany({ + where: { + username: call.request.userId, + }, + orderBy: { + timestamp: 'asc', + }, + }); + + const accountTransactions = await prisma.accountTransaction.findMany({ + where: { + username: call.request.userId, + }, + orderBy: { + timestamp: 'asc', + }, + }); + + //will also need to query the transaction server to get current status of the user + + const userSummary = { + userCommands: userCommands.map((cmd: any) => { + cmd.timestamp = String(cmd.timestamp); + return cmd; + }), + accountTransactions: accountTransactions.map((cmd: any) => { + cmd.timestamp = String(cmd.timestamp); + return cmd; + }), + } + + return callback({code: Status.OK}, userSummary); +} + +const DumpLog: LogHandlers['DumpLog'] = async (call, callback) => { + const allUserCommands = await prisma.userCommand.findMany({ orderBy: { timestamp: 'asc' } }); + const allAccountTransactions = await prisma.accountTransaction.findMany({ orderBy: { timestamp: 'asc' } }); + const allSystemEvents = await prisma.systemEvent.findMany({ orderBy: { timestamp: 'asc' } }); + const allQuoteServers = await prisma.quoteServer.findMany({ orderBy: { timestamp: 'asc' } }); + const allErrorEvents = await prisma.errorEvent.findMany({ orderBy: { timestamp: 'asc' } }); + + + const xml = createXmlBuilder({ version: '1.0' }) //set to xml version 1.0 + .ele('?xml version="1.0"?') + .ele('root') + .ele(allUserCommands) + .ele(allAccountTransactions) + .ele(allSystemEvents) + .ele(allQuoteServers) + .ele(allErrorEvents) + + const xmlString = xml.end({ prettyPrint: true }); + return callback({code: Status.OK}, { xml: xmlString }) +} + +const DumpLogUser: LogHandlers['DumpLogUser'] = async (call, callback) => { + const usersUserCommands = await prisma.userCommand.findMany({ where: { username: call.request.userId }, orderBy: { timestamp: 'asc' } }); + const usersAccountTransactions = await prisma.accountTransaction.findMany({ where: { username: call.request.userId }, orderBy: { timestamp: 'asc' } }); + const usersSystemEvents = await prisma.systemEvent.findMany({ where: { username: call.request.userId }, orderBy: { timestamp: 'asc' } }); + const usersQuoteServers = await prisma.quoteServer.findMany({ where: { username: call.request.userId }, orderBy: { timestamp: 'asc' } }); + const usersErrorEvents = await prisma.errorEvent.findMany({ where: { username: call.request.userId }, orderBy: { timestamp: 'asc' } }); + + const xml = createXmlBuilder({ version: '1.0' }) //set to xml version 1.0 + .ele('?xml version="1.0"?') + .ele('root') + .ele(usersUserCommands) + .ele(usersAccountTransactions) + .ele(usersSystemEvents) + .ele(usersQuoteServers) + .ele(usersErrorEvents) + + const xmlString = xml.end({ prettyPrint: true }); + return callback({code: Status.OK}, { xml: xmlString }) +} + +const InsertAccountTransaction: LogHandlers['InsertAccountTransaction'] = async (call, callback) => { + const insertTransaction = await prisma.accountTransaction.create({ + data: { + timestamp: Date.now(), + server: call.request.server || 'undefined', + action: call.request.action || 'undefined', + username: call.request.username || 'undefined', + funds: call.request.funds || 0, + }, + }); + const insertTransactionReturn: any = insertTransaction; + insertTransactionReturn.timestep = String(insertTransactionReturn.timestep); + return callback({code: Status.OK}, insertTransactionReturn) +} + +const InsertErrorEvent: LogHandlers['InsertErrorEvent'] = async (call, callback) => { + const insertError = await prisma.errorEvent.create({ + data: { + timestamp: Date.now(), + server: call.request.server || 'undefined', + username: call.request.username || 'undefined', + stockSymbol: call.request.stockSymbol || 'undefined', + funds: call.request.funds || 0, + command: call.request.command || 'undefined', + errorMessage: call.request.errorMessage || 'undefined', + }, + }); + const insertErrorReturn: any = insertError; + insertErrorReturn.timestep = String(insertErrorReturn.timestep); + return callback({code: Status.OK}, insertErrorReturn ); +} + +const InsertQuoteServer: LogHandlers['InsertQuoteServer'] = async (call, callback) => { + const insertQuote = await prisma.quoteServer.create({ + data: { + timestamp: Date.now(), + server: call.request.server || 'undefined', + quoteServerTime: call.request.quoteServerTime ? call.request.quoteServerTime.toNumber() : 0, + username: call.request.username || 'undefined', + stockSymbol: call.request.stockSymbol || 'undefined', + price: call.request.price || 0, + cryptokey: call.request.cryptokey || 'undefined' + } + }) + const insertQuoteReturn: any = insertQuote; + insertQuoteReturn.timestep = String(insertQuoteReturn.timestep); + return callback({code: Status.OK}, insertQuoteReturn); +} + +const InsertSystemEvent: LogHandlers['InsertSystemEvent'] = async (call, callback) => { + const insertSystemEventQuery = await prisma.systemEvent.create({ + data: { + timestamp: Date.now(), + server: call.request.server || 'undefined', + command: call.request.command || 'undefined', + username: call.request.username || 'undefined', + stockSymbol: call.request.stockSymbol || 'undefined', + funds: call.request.funds || 0, + }, + }) + const insertSystemEventQueryReturn: any = insertSystemEventQuery; + insertSystemEventQueryReturn.timestep = String(insertSystemEventQueryReturn.timestep); + return callback({code: Status.OK}, insertSystemEventQueryReturn); +} + +const InsertUserCommand: LogHandlers['InsertUserCommand'] = async (call, callback) => { + const insertCommand = await prisma.userCommand.create({ + data: { + timestamp: Date.now(), + server: call.request.server || 'undefined', + command: call.request.command || 'undefined', + username: call.request.username || 'undefined', + stockSymbol: call.request.stockSymbol || 'undefined', + funds: call.request.funds || 0, + }, + }) + const insertCommandReturn: any = insertCommand; + insertCommandReturn.timestep = String(insertCommandReturn.timestep); + return callback({code: Status.OK}, insertCommandReturn); +} + +export const LogImplementation: LogHandlers = { + DisplaySummary, + DumpLog, + DumpLogUser, + InsertAccountTransaction, + InsertErrorEvent, + InsertQuoteServer, + InsertSystemEvent, + InsertUserCommand, +} \ No newline at end of file diff --git a/audit/src/index.ts b/audit/src/index.ts index a50a722..b594553 100644 --- a/audit/src/index.ts +++ b/audit/src/index.ts @@ -1,42 +1,20 @@ import * as grpc from '@grpc/grpc-js'; -import { PrismaClient } from "@prisma/client"; +import { loadPackageDefinition, Server } from "@grpc/grpc-js"; +import { loadSync } from "@grpc/proto-loader"; +import { ProtoGrpcType } from "./proto/day-trader"; +import { LogImplementation } from './Log'; -const prisma = new PrismaClient(); +const def = loadSync(__dirname + "/proto/day-trader-copy.proto") +const definitions = loadPackageDefinition(def) as unknown as ProtoGrpcType const server = new grpc.Server(); const port = process.env.PORT || 50051; const credentials = grpc.ServerCredentials.createInsecure(); -async function getAllLogs(){ - const logs = await prisma.log.findMany(); - return logs -} -async function getAllBuyLogs(){ - const logs = await prisma.log.findMany({ - where: { - action: "BUY" - } - }); - return logs -} -async function getAllSellLogs(){ - const logs = await prisma.log.findMany({ - where: { - action: "SELL" - } - }); - return logs -} -async function getLog(id: number){ - const log = await prisma.log.findUniqueOrThrow({ - where: { - id - } - }); - return log; -} + +server.addService(definitions.day_trader.Log.service, LogImplementation) server.bindAsync(`0.0.0.0:${port}`, credentials, () => { server.start(); - console.log(`gRPC server started on port ${port}`); + console.log(`Audit server started on port ${port}`); }); \ No newline at end of file diff --git a/audit/src/proto/day-trader-copy.proto b/audit/src/proto/day-trader-copy.proto new file mode 100644 index 0000000..959ec80 --- /dev/null +++ b/audit/src/proto/day-trader-copy.proto @@ -0,0 +1,355 @@ +syntax = "proto3"; +package day_trader; + +service Quote { + // Get the current quote for the stock for the specified user + rpc Quote(QuoteRequest) returns (QuoteResponse); +} + +service Log { + // Print out the history of the users transactions to the user specified file + rpc DumpLogUser(DumpLogUserRequest) returns (DumpLogUserResponse); + // Print out to the specified file the complete set of transactions that have occurred in the system. + rpc DumpLog(DumpLogRequest) returns (DumpLogResponse); + // Provides a summary to the client of the given user's transaction history and the current status of their accounts as well as any set buy or sell triggers and their parameters + rpc DisplaySummary(DisplaySummaryRequest) returns (DisplaySummaryResponse); + // insert UserCommand into log db + rpc InsertUserCommand(InsertUserCommandRequest) returns (InsertUserCommandResponse); + // insert AccountTransaction into log db + rpc InsertAccountTransaction(InsertAccountTransactionRequest) returns (InsertAccountTransactionResponse); + // insert SystemEvent into log db + rpc InsertSystemEvent(InsertSystemEventRequest) returns (InsertSystemEventResponse); + // insert QuoteServer into log db + rpc InsertQuoteServer(InsertQuoteServerRequest) returns (InsertQuoteServerResponse); + // insert ErrorEvent into log db + rpc InsertErrorEvent(InsertErrorEventRequest) returns (InsertErrorEventResponse); +} + +service Transaction { + // Add the given amount of money to the user's account + rpc Add(AddRequest) returns (AddResponse); + // Buy the dollar amount of the stock for the specified user at the current price. + rpc Buy(BuyRequest) returns (BuyResponse); + // Commits the most recently executed BUY command + rpc CommitBuy(CommitBuyRequest) returns (CommitBuyResponse); + // Cancels the most recently executed BUY Command + rpc CancelBuy(CancelBuyRequest) returns (CancelBuyResponse); + // Sell the specified dollar mount of the stock currently held by the specified user at the current price. + rpc Sell(SellRequest) returns (SellResponse); + // Commits the most recently executed SELL command + rpc CommitSell(CommitSellRequest) returns (CommitSellResponse); + // Cancels the most recently executed SELL Command + rpc CancelSell(CancelSellRequest) returns (CancelSellResponse); + // Gets the users balance and stocks owned + rpc GetUser(GetUserRequest) returns (GetUserResponse); + // Creates a user + rpc CreateUser(CreateUserRequest) returns (CreateUserResponse); +} + +service Trigger { + // Sets a defined amount of the given stock to buy when the current stock price is less than or equal to the BUY_TRIGGER + rpc SetBuyAmount(SetBuyAmountRequest) returns (SetBuyAmountResponse); + // Cancels a SET_BUY command issued for the given stock + rpc CancelSetBuy(CancelSetBuyRequest) returns (CancelSetBuyResponse); + // Sets the trigger point base on the current stock price when any SET_BUY will execute. + rpc SetBuyTrigger(SetBuyTriggerRequest) returns (SetBuyTriggerResponse); + // Sets a defined amount of the specified stock to sell when the current stock price is equal or greater than the sell trigger point + rpc SetSellAmount(SetSellAmountRequest) returns (SetSellAmountResponse); + // Sets the stock price trigger point for executing any SET_SELL triggers associated with the given stock and user + rpc SetSellTrigger(SetSellTriggerRequest) returns (SetSellTriggerResponse); + // Cancels the SET_SELL associated with the given stock and user + rpc CancelSetSell(CancelSetSellRequest) returns (CancelSetSellResponse); +} + +message AddRequest { + string user_id = 1; + float amount = 2; +} + +message AddResponse { + float balance = 1; +} + +message QuoteRequest { + string user_id = 1; + string stock_symbol = 2; +} + +message QuoteResponse { + float quote = 1; + string sym = 2; + string user_id = 3; + uint64 timestamp = 4; + string crypto_key = 5; +} + +message BuyRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} + +message BuyResponse { + float shares = 1; + bool success = 2; +} + +message CommitBuyRequest{ + string user_id = 1; +} + +message CommitBuyResponse { + float stocksOwned = 1; + float balance = 2; + bool success = 3; +} + +message CancelBuyRequest {string user_id = 1;} +message CancelBuyResponse { + bool success = 1; +} + +message SellRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SellResponse { + float amount = 1; + float shares = 2; + bool success = 3; +} + +message CommitSellRequest { + string user_id = 1; +} +message CommitSellResponse { + float stocksOwned = 1; + float balance = 2; + bool success = 3; +} +message CancelSellRequest { + string user_id = 1; +} +message CancelSellResponse { + bool success = 1; +} +message GetUserRequest { + string user_id = 1; +} +message GetUserResponse { + string username = 1; + float balance = 2; + string role = 3; + bool success = 4; + repeated OwnedStock owned_stock = 5; + repeated BuyTrigger buy_triggers = 6; + repeated SellTrigger sell_triggers = 7; +} + +message OwnedStock { + int32 id = 1; + string username = 2; + string stock = 3; + float shares = 4; +} + +message BuyTrigger { + int32 id = 1; + string username = 2; + string stock = 3; + float trigger_amount = 4; + float buy_amount = 5; +} + +message SellTrigger { + int32 id = 1; + string username = 2; + string stock = 3; + float trigger_amount = 4; + float shares_to_sell = 5; +} + +message CreateUserRequest { + string user_id = 1; +} +message CreateUserResponse { + string username = 1; + bool success = 2; +} +message SetBuyAmountRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SetBuyAmountResponse { + float balance = 1; + float buy_amount = 2; + bool success = 3; +} +message CancelSetBuyRequest { + string user_id = 1; + string stock_symbol = 2; +} +message CancelSetBuyResponse { + bool success = 1; +} +message SetBuyTriggerRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SetBuyTriggerResponse { + float trigger_amount = 1; + string stock = 2; + bool success = 3; +} +message SetSellAmountRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SetSellAmountResponse { + float currentStockPrice = 1; + float numSharesToSell = 2; + bool success = 3; +} +message SetSellTriggerRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SetSellTriggerResponse { + +} +message CancelSetSellRequest { + string user_id = 1; + string stock_symbol = 2; +} +message CancelSetSellResponse {} +message DumpLogUserRequest { + string user_id = 1; + string filename = 2; +} +message DumpLogUserResponse { + string xml = 1; +} +message DumpLogRequest { + string filename = 1; +} +message DumpLogResponse { + string xml = 1; +} +message DisplaySummaryRequest { + string user_id = 1; +} +message DisplaySummaryResponse { + repeated UserCommand user_commands = 1; + repeated AccountTransaction account_transactions = 2; +} + +message UserCommand { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message AccountTransaction { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string action = 4; + string username = 5; + float funds = 6; +} + +message InsertUserCommandRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; +} +message InsertUserCommandResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message InsertAccountTransactionRequest { + string server = 1; + string action = 2; + string username = 3; + float funds = 4; +} +message InsertAccountTransactionResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string action = 4; + string username = 5; + float funds = 6; +} + +message InsertSystemEventRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; +} +message InsertSystemEventResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message InsertQuoteServerRequest { + string server = 1; + int64 quoteServerTime = 2; + string username = 3; + string stockSymbol = 4; + float price = 5; + string cryptokey = 6; +} +message InsertQuoteServerResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + int64 quote_server_time = 4; + string username = 5; + string stock_symbol = 6; + float price = 7; + string crypto_key = 8; +} + +message InsertErrorEventRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; + string errorMessage = 6; +} +message InsertErrorEventResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; + string error_message = 8; +} \ No newline at end of file diff --git a/audit/src/proto/day-trader.ts b/audit/src/proto/day-trader.ts new file mode 100644 index 0000000..13b4da4 --- /dev/null +++ b/audit/src/proto/day-trader.ts @@ -0,0 +1,74 @@ +import type * as grpc from '@grpc/grpc-js'; +import type { MessageTypeDefinition } from '@grpc/proto-loader'; + +import type { LogClient as _day_trader_LogClient, LogDefinition as _day_trader_LogDefinition } from './day_trader/Log'; +import type { QuoteClient as _day_trader_QuoteClient, QuoteDefinition as _day_trader_QuoteDefinition } from './day_trader/Quote'; +import type { TransactionClient as _day_trader_TransactionClient, TransactionDefinition as _day_trader_TransactionDefinition } from './day_trader/Transaction'; +import type { TriggerClient as _day_trader_TriggerClient, TriggerDefinition as _day_trader_TriggerDefinition } from './day_trader/Trigger'; + +type SubtypeConstructor any, Subtype> = { + new(...args: ConstructorParameters): Subtype; +}; + +export interface ProtoGrpcType { + day_trader: { + AccountTransaction: MessageTypeDefinition + AddRequest: MessageTypeDefinition + AddResponse: MessageTypeDefinition + BuyRequest: MessageTypeDefinition + BuyResponse: MessageTypeDefinition + BuyTrigger: MessageTypeDefinition + CancelBuyRequest: MessageTypeDefinition + CancelBuyResponse: MessageTypeDefinition + CancelSellRequest: MessageTypeDefinition + CancelSellResponse: MessageTypeDefinition + CancelSetBuyRequest: MessageTypeDefinition + CancelSetBuyResponse: MessageTypeDefinition + CancelSetSellRequest: MessageTypeDefinition + CancelSetSellResponse: MessageTypeDefinition + CommitBuyRequest: MessageTypeDefinition + CommitBuyResponse: MessageTypeDefinition + CommitSellRequest: MessageTypeDefinition + CommitSellResponse: MessageTypeDefinition + CreateUserRequest: MessageTypeDefinition + CreateUserResponse: MessageTypeDefinition + DisplaySummaryRequest: MessageTypeDefinition + DisplaySummaryResponse: MessageTypeDefinition + DumpLogRequest: MessageTypeDefinition + DumpLogResponse: MessageTypeDefinition + DumpLogUserRequest: MessageTypeDefinition + DumpLogUserResponse: MessageTypeDefinition + GetUserRequest: MessageTypeDefinition + GetUserResponse: MessageTypeDefinition + InsertAccountTransactionRequest: MessageTypeDefinition + InsertAccountTransactionResponse: MessageTypeDefinition + InsertErrorEventRequest: MessageTypeDefinition + InsertErrorEventResponse: MessageTypeDefinition + InsertQuoteServerRequest: MessageTypeDefinition + InsertQuoteServerResponse: MessageTypeDefinition + InsertSystemEventRequest: MessageTypeDefinition + InsertSystemEventResponse: MessageTypeDefinition + InsertUserCommandRequest: MessageTypeDefinition + InsertUserCommandResponse: MessageTypeDefinition + Log: SubtypeConstructor & { service: _day_trader_LogDefinition } + OwnedStock: MessageTypeDefinition + Quote: SubtypeConstructor & { service: _day_trader_QuoteDefinition } + QuoteRequest: MessageTypeDefinition + QuoteResponse: MessageTypeDefinition + SellRequest: MessageTypeDefinition + SellResponse: MessageTypeDefinition + SellTrigger: MessageTypeDefinition + SetBuyAmountRequest: MessageTypeDefinition + SetBuyAmountResponse: MessageTypeDefinition + SetBuyTriggerRequest: MessageTypeDefinition + SetBuyTriggerResponse: MessageTypeDefinition + SetSellAmountRequest: MessageTypeDefinition + SetSellAmountResponse: MessageTypeDefinition + SetSellTriggerRequest: MessageTypeDefinition + SetSellTriggerResponse: MessageTypeDefinition + Transaction: SubtypeConstructor & { service: _day_trader_TransactionDefinition } + Trigger: SubtypeConstructor & { service: _day_trader_TriggerDefinition } + UserCommand: MessageTypeDefinition + } +} + diff --git a/audit/src/proto/day_trader/AccountTransaction.ts b/audit/src/proto/day_trader/AccountTransaction.ts new file mode 100644 index 0000000..18bbeca --- /dev/null +++ b/audit/src/proto/day_trader/AccountTransaction.ts @@ -0,0 +1,21 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface AccountTransaction { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number | string); +} + +export interface AccountTransaction__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number); +} diff --git a/audit/src/proto/day_trader/AddRequest.ts b/audit/src/proto/day_trader/AddRequest.ts new file mode 100644 index 0000000..93d4042 --- /dev/null +++ b/audit/src/proto/day_trader/AddRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface AddRequest { + 'userId'?: (string); + 'amount'?: (number | string); +} + +export interface AddRequest__Output { + 'userId'?: (string); + 'amount'?: (number); +} diff --git a/audit/src/proto/day_trader/AddResponse.ts b/audit/src/proto/day_trader/AddResponse.ts new file mode 100644 index 0000000..5e8a214 --- /dev/null +++ b/audit/src/proto/day_trader/AddResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface AddResponse { + 'balance'?: (number | string); +} + +export interface AddResponse__Output { + 'balance'?: (number); +} diff --git a/audit/src/proto/day_trader/BuyRequest.ts b/audit/src/proto/day_trader/BuyRequest.ts new file mode 100644 index 0000000..96ac3a5 --- /dev/null +++ b/audit/src/proto/day_trader/BuyRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface BuyRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface BuyRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/audit/src/proto/day_trader/BuyResponse.ts b/audit/src/proto/day_trader/BuyResponse.ts new file mode 100644 index 0000000..ae0ecf7 --- /dev/null +++ b/audit/src/proto/day_trader/BuyResponse.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface BuyResponse { + 'shares'?: (number | string); + 'success'?: (boolean); +} + +export interface BuyResponse__Output { + 'shares'?: (number); + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/BuyTrigger.ts b/audit/src/proto/day_trader/BuyTrigger.ts new file mode 100644 index 0000000..b8a069a --- /dev/null +++ b/audit/src/proto/day_trader/BuyTrigger.ts @@ -0,0 +1,18 @@ +// Original file: ../protos/day-trader.proto + + +export interface BuyTrigger { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'triggerAmount'?: (number | string); + 'buyAmount'?: (number | string); +} + +export interface BuyTrigger__Output { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'triggerAmount'?: (number); + 'buyAmount'?: (number); +} diff --git a/audit/src/proto/day_trader/CancelBuyRequest.ts b/audit/src/proto/day_trader/CancelBuyRequest.ts new file mode 100644 index 0000000..bbd6348 --- /dev/null +++ b/audit/src/proto/day_trader/CancelBuyRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelBuyRequest { + 'userId'?: (string); +} + +export interface CancelBuyRequest__Output { + 'userId'?: (string); +} diff --git a/audit/src/proto/day_trader/CancelBuyResponse.ts b/audit/src/proto/day_trader/CancelBuyResponse.ts new file mode 100644 index 0000000..feace93 --- /dev/null +++ b/audit/src/proto/day_trader/CancelBuyResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelBuyResponse { + 'success'?: (boolean); +} + +export interface CancelBuyResponse__Output { + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/CancelSellRequest.ts b/audit/src/proto/day_trader/CancelSellRequest.ts new file mode 100644 index 0000000..46fcb7f --- /dev/null +++ b/audit/src/proto/day_trader/CancelSellRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSellRequest { + 'userId'?: (string); +} + +export interface CancelSellRequest__Output { + 'userId'?: (string); +} diff --git a/audit/src/proto/day_trader/CancelSellResponse.ts b/audit/src/proto/day_trader/CancelSellResponse.ts new file mode 100644 index 0000000..0234d76 --- /dev/null +++ b/audit/src/proto/day_trader/CancelSellResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSellResponse { + 'success'?: (boolean); +} + +export interface CancelSellResponse__Output { + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/CancelSetBuyRequest.ts b/audit/src/proto/day_trader/CancelSetBuyRequest.ts new file mode 100644 index 0000000..b5985ac --- /dev/null +++ b/audit/src/proto/day_trader/CancelSetBuyRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetBuyRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface CancelSetBuyRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); +} diff --git a/audit/src/proto/day_trader/CancelSetBuyResponse.ts b/audit/src/proto/day_trader/CancelSetBuyResponse.ts new file mode 100644 index 0000000..235ba42 --- /dev/null +++ b/audit/src/proto/day_trader/CancelSetBuyResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetBuyResponse { + 'success'?: (boolean); +} + +export interface CancelSetBuyResponse__Output { + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/CancelSetSellRequest.ts b/audit/src/proto/day_trader/CancelSetSellRequest.ts new file mode 100644 index 0000000..8aa5272 --- /dev/null +++ b/audit/src/proto/day_trader/CancelSetSellRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetSellRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface CancelSetSellRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); +} diff --git a/audit/src/proto/day_trader/CancelSetSellResponse.ts b/audit/src/proto/day_trader/CancelSetSellResponse.ts new file mode 100644 index 0000000..a2b34e9 --- /dev/null +++ b/audit/src/proto/day_trader/CancelSetSellResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetSellResponse { +} + +export interface CancelSetSellResponse__Output { +} diff --git a/audit/src/proto/day_trader/CommitBuyRequest.ts b/audit/src/proto/day_trader/CommitBuyRequest.ts new file mode 100644 index 0000000..7de6821 --- /dev/null +++ b/audit/src/proto/day_trader/CommitBuyRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitBuyRequest { + 'userId'?: (string); +} + +export interface CommitBuyRequest__Output { + 'userId'?: (string); +} diff --git a/audit/src/proto/day_trader/CommitBuyResponse.ts b/audit/src/proto/day_trader/CommitBuyResponse.ts new file mode 100644 index 0000000..3f79ed5 --- /dev/null +++ b/audit/src/proto/day_trader/CommitBuyResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitBuyResponse { + 'stocksOwned'?: (number | string); + 'balance'?: (number | string); + 'success'?: (boolean); +} + +export interface CommitBuyResponse__Output { + 'stocksOwned'?: (number); + 'balance'?: (number); + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/CommitSellRequest.ts b/audit/src/proto/day_trader/CommitSellRequest.ts new file mode 100644 index 0000000..7e19941 --- /dev/null +++ b/audit/src/proto/day_trader/CommitSellRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitSellRequest { + 'userId'?: (string); +} + +export interface CommitSellRequest__Output { + 'userId'?: (string); +} diff --git a/audit/src/proto/day_trader/CommitSellResponse.ts b/audit/src/proto/day_trader/CommitSellResponse.ts new file mode 100644 index 0000000..c3da957 --- /dev/null +++ b/audit/src/proto/day_trader/CommitSellResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitSellResponse { + 'stocksOwned'?: (number | string); + 'balance'?: (number | string); + 'success'?: (boolean); +} + +export interface CommitSellResponse__Output { + 'stocksOwned'?: (number); + 'balance'?: (number); + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/CreateUserRequest.ts b/audit/src/proto/day_trader/CreateUserRequest.ts new file mode 100644 index 0000000..2a147a2 --- /dev/null +++ b/audit/src/proto/day_trader/CreateUserRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CreateUserRequest { + 'userId'?: (string); +} + +export interface CreateUserRequest__Output { + 'userId'?: (string); +} diff --git a/audit/src/proto/day_trader/CreateUserResponse.ts b/audit/src/proto/day_trader/CreateUserResponse.ts new file mode 100644 index 0000000..fbc6371 --- /dev/null +++ b/audit/src/proto/day_trader/CreateUserResponse.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface CreateUserResponse { + 'username'?: (string); + 'success'?: (boolean); +} + +export interface CreateUserResponse__Output { + 'username'?: (string); + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/DisplaySummaryRequest.ts b/audit/src/proto/day_trader/DisplaySummaryRequest.ts new file mode 100644 index 0000000..f83b983 --- /dev/null +++ b/audit/src/proto/day_trader/DisplaySummaryRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DisplaySummaryRequest { + 'userId'?: (string); +} + +export interface DisplaySummaryRequest__Output { + 'userId'?: (string); +} diff --git a/audit/src/proto/day_trader/DisplaySummaryResponse.ts b/audit/src/proto/day_trader/DisplaySummaryResponse.ts new file mode 100644 index 0000000..9ef9256 --- /dev/null +++ b/audit/src/proto/day_trader/DisplaySummaryResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + +import type { UserCommand as _day_trader_UserCommand, UserCommand__Output as _day_trader_UserCommand__Output } from '../day_trader/UserCommand'; +import type { AccountTransaction as _day_trader_AccountTransaction, AccountTransaction__Output as _day_trader_AccountTransaction__Output } from '../day_trader/AccountTransaction'; + +export interface DisplaySummaryResponse { + 'userCommands'?: (_day_trader_UserCommand)[]; + 'accountTransactions'?: (_day_trader_AccountTransaction)[]; +} + +export interface DisplaySummaryResponse__Output { + 'userCommands'?: (_day_trader_UserCommand__Output)[]; + 'accountTransactions'?: (_day_trader_AccountTransaction__Output)[]; +} diff --git a/audit/src/proto/day_trader/DumpLogRequest.ts b/audit/src/proto/day_trader/DumpLogRequest.ts new file mode 100644 index 0000000..3faae1e --- /dev/null +++ b/audit/src/proto/day_trader/DumpLogRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogRequest { + 'filename'?: (string); +} + +export interface DumpLogRequest__Output { + 'filename'?: (string); +} diff --git a/audit/src/proto/day_trader/DumpLogResponse.ts b/audit/src/proto/day_trader/DumpLogResponse.ts new file mode 100644 index 0000000..ccea642 --- /dev/null +++ b/audit/src/proto/day_trader/DumpLogResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogResponse { + 'xml'?: (string); +} + +export interface DumpLogResponse__Output { + 'xml'?: (string); +} diff --git a/audit/src/proto/day_trader/DumpLogUserRequest.ts b/audit/src/proto/day_trader/DumpLogUserRequest.ts new file mode 100644 index 0000000..0291327 --- /dev/null +++ b/audit/src/proto/day_trader/DumpLogUserRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogUserRequest { + 'userId'?: (string); + 'filename'?: (string); +} + +export interface DumpLogUserRequest__Output { + 'userId'?: (string); + 'filename'?: (string); +} diff --git a/audit/src/proto/day_trader/DumpLogUserResponse.ts b/audit/src/proto/day_trader/DumpLogUserResponse.ts new file mode 100644 index 0000000..7da0958 --- /dev/null +++ b/audit/src/proto/day_trader/DumpLogUserResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogUserResponse { + 'xml'?: (string); +} + +export interface DumpLogUserResponse__Output { + 'xml'?: (string); +} diff --git a/audit/src/proto/day_trader/GetUserRequest.ts b/audit/src/proto/day_trader/GetUserRequest.ts new file mode 100644 index 0000000..23bd6d3 --- /dev/null +++ b/audit/src/proto/day_trader/GetUserRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface GetUserRequest { + 'userId'?: (string); +} + +export interface GetUserRequest__Output { + 'userId'?: (string); +} diff --git a/audit/src/proto/day_trader/GetUserResponse.ts b/audit/src/proto/day_trader/GetUserResponse.ts new file mode 100644 index 0000000..b6303de --- /dev/null +++ b/audit/src/proto/day_trader/GetUserResponse.ts @@ -0,0 +1,25 @@ +// Original file: ../protos/day-trader.proto + +import type { OwnedStock as _day_trader_OwnedStock, OwnedStock__Output as _day_trader_OwnedStock__Output } from '../day_trader/OwnedStock'; +import type { BuyTrigger as _day_trader_BuyTrigger, BuyTrigger__Output as _day_trader_BuyTrigger__Output } from '../day_trader/BuyTrigger'; +import type { SellTrigger as _day_trader_SellTrigger, SellTrigger__Output as _day_trader_SellTrigger__Output } from '../day_trader/SellTrigger'; + +export interface GetUserResponse { + 'username'?: (string); + 'balance'?: (number | string); + 'role'?: (string); + 'success'?: (boolean); + 'ownedStock'?: (_day_trader_OwnedStock)[]; + 'buyTriggers'?: (_day_trader_BuyTrigger)[]; + 'sellTriggers'?: (_day_trader_SellTrigger)[]; +} + +export interface GetUserResponse__Output { + 'username'?: (string); + 'balance'?: (number); + 'role'?: (string); + 'success'?: (boolean); + 'ownedStock'?: (_day_trader_OwnedStock__Output)[]; + 'buyTriggers'?: (_day_trader_BuyTrigger__Output)[]; + 'sellTriggers'?: (_day_trader_SellTrigger__Output)[]; +} diff --git a/audit/src/proto/day_trader/InsertAccountTransactionRequest.ts b/audit/src/proto/day_trader/InsertAccountTransactionRequest.ts new file mode 100644 index 0000000..fb4a9d1 --- /dev/null +++ b/audit/src/proto/day_trader/InsertAccountTransactionRequest.ts @@ -0,0 +1,16 @@ +// Original file: ../protos/day-trader.proto + + +export interface InsertAccountTransactionRequest { + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number | string); +} + +export interface InsertAccountTransactionRequest__Output { + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number); +} diff --git a/audit/src/proto/day_trader/InsertAccountTransactionResponse.ts b/audit/src/proto/day_trader/InsertAccountTransactionResponse.ts new file mode 100644 index 0000000..c274fab --- /dev/null +++ b/audit/src/proto/day_trader/InsertAccountTransactionResponse.ts @@ -0,0 +1,21 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertAccountTransactionResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number | string); +} + +export interface InsertAccountTransactionResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number); +} diff --git a/audit/src/proto/day_trader/InsertErrorEventRequest.ts b/audit/src/proto/day_trader/InsertErrorEventRequest.ts new file mode 100644 index 0000000..bbd90ff --- /dev/null +++ b/audit/src/proto/day_trader/InsertErrorEventRequest.ts @@ -0,0 +1,20 @@ +// Original file: ../protos/day-trader.proto + + +export interface InsertErrorEventRequest { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); + 'errorMessage'?: (string); +} + +export interface InsertErrorEventRequest__Output { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); + 'errorMessage'?: (string); +} diff --git a/audit/src/proto/day_trader/InsertErrorEventResponse.ts b/audit/src/proto/day_trader/InsertErrorEventResponse.ts new file mode 100644 index 0000000..a596ebe --- /dev/null +++ b/audit/src/proto/day_trader/InsertErrorEventResponse.ts @@ -0,0 +1,25 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertErrorEventResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); + 'errorMessage'?: (string); +} + +export interface InsertErrorEventResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); + 'errorMessage'?: (string); +} diff --git a/audit/src/proto/day_trader/InsertQuoteServerRequest.ts b/audit/src/proto/day_trader/InsertQuoteServerRequest.ts new file mode 100644 index 0000000..d14d9a6 --- /dev/null +++ b/audit/src/proto/day_trader/InsertQuoteServerRequest.ts @@ -0,0 +1,21 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertQuoteServerRequest { + 'server'?: (string); + 'quoteServerTime'?: (number | string | Long); + 'username'?: (string); + 'stockSymbol'?: (string); + 'price'?: (number | string); + 'cryptokey'?: (string); +} + +export interface InsertQuoteServerRequest__Output { + 'server'?: (string); + 'quoteServerTime'?: (Long); + 'username'?: (string); + 'stockSymbol'?: (string); + 'price'?: (number); + 'cryptokey'?: (string); +} diff --git a/audit/src/proto/day_trader/InsertQuoteServerResponse.ts b/audit/src/proto/day_trader/InsertQuoteServerResponse.ts new file mode 100644 index 0000000..30b69c7 --- /dev/null +++ b/audit/src/proto/day_trader/InsertQuoteServerResponse.ts @@ -0,0 +1,25 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertQuoteServerResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'quoteServerTime'?: (number | string | Long); + 'username'?: (string); + 'stockSymbol'?: (string); + 'price'?: (number | string); + 'cryptoKey'?: (string); +} + +export interface InsertQuoteServerResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'quoteServerTime'?: (Long); + 'username'?: (string); + 'stockSymbol'?: (string); + 'price'?: (number); + 'cryptoKey'?: (string); +} diff --git a/audit/src/proto/day_trader/InsertSystemEventRequest.ts b/audit/src/proto/day_trader/InsertSystemEventRequest.ts new file mode 100644 index 0000000..00e3b9f --- /dev/null +++ b/audit/src/proto/day_trader/InsertSystemEventRequest.ts @@ -0,0 +1,18 @@ +// Original file: ../protos/day-trader.proto + + +export interface InsertSystemEventRequest { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface InsertSystemEventRequest__Output { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/audit/src/proto/day_trader/InsertSystemEventResponse.ts b/audit/src/proto/day_trader/InsertSystemEventResponse.ts new file mode 100644 index 0000000..a916ffd --- /dev/null +++ b/audit/src/proto/day_trader/InsertSystemEventResponse.ts @@ -0,0 +1,23 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertSystemEventResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface InsertSystemEventResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/audit/src/proto/day_trader/InsertUserCommandRequest.ts b/audit/src/proto/day_trader/InsertUserCommandRequest.ts new file mode 100644 index 0000000..b83d7e7 --- /dev/null +++ b/audit/src/proto/day_trader/InsertUserCommandRequest.ts @@ -0,0 +1,18 @@ +// Original file: ../protos/day-trader.proto + + +export interface InsertUserCommandRequest { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface InsertUserCommandRequest__Output { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/audit/src/proto/day_trader/InsertUserCommandResponse.ts b/audit/src/proto/day_trader/InsertUserCommandResponse.ts new file mode 100644 index 0000000..a44f32c --- /dev/null +++ b/audit/src/proto/day_trader/InsertUserCommandResponse.ts @@ -0,0 +1,23 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertUserCommandResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface InsertUserCommandResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/audit/src/proto/day_trader/Log.ts b/audit/src/proto/day_trader/Log.ts new file mode 100644 index 0000000..b866487 --- /dev/null +++ b/audit/src/proto/day_trader/Log.ts @@ -0,0 +1,125 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { DisplaySummaryRequest as _day_trader_DisplaySummaryRequest, DisplaySummaryRequest__Output as _day_trader_DisplaySummaryRequest__Output } from '../day_trader/DisplaySummaryRequest'; +import type { DisplaySummaryResponse as _day_trader_DisplaySummaryResponse, DisplaySummaryResponse__Output as _day_trader_DisplaySummaryResponse__Output } from '../day_trader/DisplaySummaryResponse'; +import type { DumpLogRequest as _day_trader_DumpLogRequest, DumpLogRequest__Output as _day_trader_DumpLogRequest__Output } from '../day_trader/DumpLogRequest'; +import type { DumpLogResponse as _day_trader_DumpLogResponse, DumpLogResponse__Output as _day_trader_DumpLogResponse__Output } from '../day_trader/DumpLogResponse'; +import type { DumpLogUserRequest as _day_trader_DumpLogUserRequest, DumpLogUserRequest__Output as _day_trader_DumpLogUserRequest__Output } from '../day_trader/DumpLogUserRequest'; +import type { DumpLogUserResponse as _day_trader_DumpLogUserResponse, DumpLogUserResponse__Output as _day_trader_DumpLogUserResponse__Output } from '../day_trader/DumpLogUserResponse'; +import type { InsertAccountTransactionRequest as _day_trader_InsertAccountTransactionRequest, InsertAccountTransactionRequest__Output as _day_trader_InsertAccountTransactionRequest__Output } from '../day_trader/InsertAccountTransactionRequest'; +import type { InsertAccountTransactionResponse as _day_trader_InsertAccountTransactionResponse, InsertAccountTransactionResponse__Output as _day_trader_InsertAccountTransactionResponse__Output } from '../day_trader/InsertAccountTransactionResponse'; +import type { InsertErrorEventRequest as _day_trader_InsertErrorEventRequest, InsertErrorEventRequest__Output as _day_trader_InsertErrorEventRequest__Output } from '../day_trader/InsertErrorEventRequest'; +import type { InsertErrorEventResponse as _day_trader_InsertErrorEventResponse, InsertErrorEventResponse__Output as _day_trader_InsertErrorEventResponse__Output } from '../day_trader/InsertErrorEventResponse'; +import type { InsertQuoteServerRequest as _day_trader_InsertQuoteServerRequest, InsertQuoteServerRequest__Output as _day_trader_InsertQuoteServerRequest__Output } from '../day_trader/InsertQuoteServerRequest'; +import type { InsertQuoteServerResponse as _day_trader_InsertQuoteServerResponse, InsertQuoteServerResponse__Output as _day_trader_InsertQuoteServerResponse__Output } from '../day_trader/InsertQuoteServerResponse'; +import type { InsertSystemEventRequest as _day_trader_InsertSystemEventRequest, InsertSystemEventRequest__Output as _day_trader_InsertSystemEventRequest__Output } from '../day_trader/InsertSystemEventRequest'; +import type { InsertSystemEventResponse as _day_trader_InsertSystemEventResponse, InsertSystemEventResponse__Output as _day_trader_InsertSystemEventResponse__Output } from '../day_trader/InsertSystemEventResponse'; +import type { InsertUserCommandRequest as _day_trader_InsertUserCommandRequest, InsertUserCommandRequest__Output as _day_trader_InsertUserCommandRequest__Output } from '../day_trader/InsertUserCommandRequest'; +import type { InsertUserCommandResponse as _day_trader_InsertUserCommandResponse, InsertUserCommandResponse__Output as _day_trader_InsertUserCommandResponse__Output } from '../day_trader/InsertUserCommandResponse'; + +export interface LogClient extends grpc.Client { + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + + DumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + + DumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + + InsertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + InsertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + InsertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + InsertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + insertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + insertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + insertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + insertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + + InsertErrorEvent(argument: _day_trader_InsertErrorEventRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + InsertErrorEvent(argument: _day_trader_InsertErrorEventRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + InsertErrorEvent(argument: _day_trader_InsertErrorEventRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + InsertErrorEvent(argument: _day_trader_InsertErrorEventRequest, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + insertErrorEvent(argument: _day_trader_InsertErrorEventRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + insertErrorEvent(argument: _day_trader_InsertErrorEventRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + insertErrorEvent(argument: _day_trader_InsertErrorEventRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + insertErrorEvent(argument: _day_trader_InsertErrorEventRequest, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + + InsertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + InsertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + InsertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + InsertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + insertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + insertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + insertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + insertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + + InsertSystemEvent(argument: _day_trader_InsertSystemEventRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + InsertSystemEvent(argument: _day_trader_InsertSystemEventRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + InsertSystemEvent(argument: _day_trader_InsertSystemEventRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + InsertSystemEvent(argument: _day_trader_InsertSystemEventRequest, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + insertSystemEvent(argument: _day_trader_InsertSystemEventRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + insertSystemEvent(argument: _day_trader_InsertSystemEventRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + insertSystemEvent(argument: _day_trader_InsertSystemEventRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + insertSystemEvent(argument: _day_trader_InsertSystemEventRequest, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + + InsertUserCommand(argument: _day_trader_InsertUserCommandRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + InsertUserCommand(argument: _day_trader_InsertUserCommandRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + InsertUserCommand(argument: _day_trader_InsertUserCommandRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + InsertUserCommand(argument: _day_trader_InsertUserCommandRequest, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + insertUserCommand(argument: _day_trader_InsertUserCommandRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + insertUserCommand(argument: _day_trader_InsertUserCommandRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + insertUserCommand(argument: _day_trader_InsertUserCommandRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + insertUserCommand(argument: _day_trader_InsertUserCommandRequest, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface LogHandlers extends grpc.UntypedServiceImplementation { + DisplaySummary: grpc.handleUnaryCall<_day_trader_DisplaySummaryRequest__Output, _day_trader_DisplaySummaryResponse>; + + DumpLog: grpc.handleUnaryCall<_day_trader_DumpLogRequest__Output, _day_trader_DumpLogResponse>; + + DumpLogUser: grpc.handleUnaryCall<_day_trader_DumpLogUserRequest__Output, _day_trader_DumpLogUserResponse>; + + InsertAccountTransaction: grpc.handleUnaryCall<_day_trader_InsertAccountTransactionRequest__Output, _day_trader_InsertAccountTransactionResponse>; + + InsertErrorEvent: grpc.handleUnaryCall<_day_trader_InsertErrorEventRequest__Output, _day_trader_InsertErrorEventResponse>; + + InsertQuoteServer: grpc.handleUnaryCall<_day_trader_InsertQuoteServerRequest__Output, _day_trader_InsertQuoteServerResponse>; + + InsertSystemEvent: grpc.handleUnaryCall<_day_trader_InsertSystemEventRequest__Output, _day_trader_InsertSystemEventResponse>; + + InsertUserCommand: grpc.handleUnaryCall<_day_trader_InsertUserCommandRequest__Output, _day_trader_InsertUserCommandResponse>; + +} + +export interface LogDefinition extends grpc.ServiceDefinition { + DisplaySummary: MethodDefinition<_day_trader_DisplaySummaryRequest, _day_trader_DisplaySummaryResponse, _day_trader_DisplaySummaryRequest__Output, _day_trader_DisplaySummaryResponse__Output> + DumpLog: MethodDefinition<_day_trader_DumpLogRequest, _day_trader_DumpLogResponse, _day_trader_DumpLogRequest__Output, _day_trader_DumpLogResponse__Output> + DumpLogUser: MethodDefinition<_day_trader_DumpLogUserRequest, _day_trader_DumpLogUserResponse, _day_trader_DumpLogUserRequest__Output, _day_trader_DumpLogUserResponse__Output> + InsertAccountTransaction: MethodDefinition<_day_trader_InsertAccountTransactionRequest, _day_trader_InsertAccountTransactionResponse, _day_trader_InsertAccountTransactionRequest__Output, _day_trader_InsertAccountTransactionResponse__Output> + InsertErrorEvent: MethodDefinition<_day_trader_InsertErrorEventRequest, _day_trader_InsertErrorEventResponse, _day_trader_InsertErrorEventRequest__Output, _day_trader_InsertErrorEventResponse__Output> + InsertQuoteServer: MethodDefinition<_day_trader_InsertQuoteServerRequest, _day_trader_InsertQuoteServerResponse, _day_trader_InsertQuoteServerRequest__Output, _day_trader_InsertQuoteServerResponse__Output> + InsertSystemEvent: MethodDefinition<_day_trader_InsertSystemEventRequest, _day_trader_InsertSystemEventResponse, _day_trader_InsertSystemEventRequest__Output, _day_trader_InsertSystemEventResponse__Output> + InsertUserCommand: MethodDefinition<_day_trader_InsertUserCommandRequest, _day_trader_InsertUserCommandResponse, _day_trader_InsertUserCommandRequest__Output, _day_trader_InsertUserCommandResponse__Output> +} diff --git a/audit/src/proto/day_trader/OwnedStock.ts b/audit/src/proto/day_trader/OwnedStock.ts new file mode 100644 index 0000000..7767023 --- /dev/null +++ b/audit/src/proto/day_trader/OwnedStock.ts @@ -0,0 +1,16 @@ +// Original file: ../protos/day-trader.proto + + +export interface OwnedStock { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'shares'?: (number | string); +} + +export interface OwnedStock__Output { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'shares'?: (number); +} diff --git a/audit/src/proto/day_trader/Quote.ts b/audit/src/proto/day_trader/Quote.ts new file mode 100644 index 0000000..427f5a4 --- /dev/null +++ b/audit/src/proto/day_trader/Quote.ts @@ -0,0 +1,27 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { QuoteRequest as _day_trader_QuoteRequest, QuoteRequest__Output as _day_trader_QuoteRequest__Output } from '../day_trader/QuoteRequest'; +import type { QuoteResponse as _day_trader_QuoteResponse, QuoteResponse__Output as _day_trader_QuoteResponse__Output } from '../day_trader/QuoteResponse'; + +export interface QuoteClient extends grpc.Client { + Quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface QuoteHandlers extends grpc.UntypedServiceImplementation { + Quote: grpc.handleUnaryCall<_day_trader_QuoteRequest__Output, _day_trader_QuoteResponse>; + +} + +export interface QuoteDefinition extends grpc.ServiceDefinition { + Quote: MethodDefinition<_day_trader_QuoteRequest, _day_trader_QuoteResponse, _day_trader_QuoteRequest__Output, _day_trader_QuoteResponse__Output> +} diff --git a/audit/src/proto/day_trader/QuoteRequest.ts b/audit/src/proto/day_trader/QuoteRequest.ts new file mode 100644 index 0000000..f638a73 --- /dev/null +++ b/audit/src/proto/day_trader/QuoteRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface QuoteRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface QuoteRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); +} diff --git a/audit/src/proto/day_trader/QuoteResponse.ts b/audit/src/proto/day_trader/QuoteResponse.ts new file mode 100644 index 0000000..eb71109 --- /dev/null +++ b/audit/src/proto/day_trader/QuoteResponse.ts @@ -0,0 +1,19 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface QuoteResponse { + 'quote'?: (number | string); + 'sym'?: (string); + 'userId'?: (string); + 'timestamp'?: (number | string | Long); + 'cryptoKey'?: (string); +} + +export interface QuoteResponse__Output { + 'quote'?: (number); + 'sym'?: (string); + 'userId'?: (string); + 'timestamp'?: (Long); + 'cryptoKey'?: (string); +} diff --git a/audit/src/proto/day_trader/SellRequest.ts b/audit/src/proto/day_trader/SellRequest.ts new file mode 100644 index 0000000..aea8989 --- /dev/null +++ b/audit/src/proto/day_trader/SellRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SellRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SellRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/audit/src/proto/day_trader/SellResponse.ts b/audit/src/proto/day_trader/SellResponse.ts new file mode 100644 index 0000000..4e35233 --- /dev/null +++ b/audit/src/proto/day_trader/SellResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SellResponse { + 'amount'?: (number | string); + 'shares'?: (number | string); + 'success'?: (boolean); +} + +export interface SellResponse__Output { + 'amount'?: (number); + 'shares'?: (number); + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/SellTrigger.ts b/audit/src/proto/day_trader/SellTrigger.ts new file mode 100644 index 0000000..6ea42d1 --- /dev/null +++ b/audit/src/proto/day_trader/SellTrigger.ts @@ -0,0 +1,18 @@ +// Original file: ../protos/day-trader.proto + + +export interface SellTrigger { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'triggerAmount'?: (number | string); + 'sharesToSell'?: (number | string); +} + +export interface SellTrigger__Output { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'triggerAmount'?: (number); + 'sharesToSell'?: (number); +} diff --git a/audit/src/proto/day_trader/SetBuyAmountRequest.ts b/audit/src/proto/day_trader/SetBuyAmountRequest.ts new file mode 100644 index 0000000..70cfb2f --- /dev/null +++ b/audit/src/proto/day_trader/SetBuyAmountRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyAmountRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetBuyAmountRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/audit/src/proto/day_trader/SetBuyAmountResponse.ts b/audit/src/proto/day_trader/SetBuyAmountResponse.ts new file mode 100644 index 0000000..b32f849 --- /dev/null +++ b/audit/src/proto/day_trader/SetBuyAmountResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyAmountResponse { + 'balance'?: (number | string); + 'buyAmount'?: (number | string); + 'success'?: (boolean); +} + +export interface SetBuyAmountResponse__Output { + 'balance'?: (number); + 'buyAmount'?: (number); + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/SetBuyTriggerRequest.ts b/audit/src/proto/day_trader/SetBuyTriggerRequest.ts new file mode 100644 index 0000000..35bbf34 --- /dev/null +++ b/audit/src/proto/day_trader/SetBuyTriggerRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyTriggerRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetBuyTriggerRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/audit/src/proto/day_trader/SetBuyTriggerResponse.ts b/audit/src/proto/day_trader/SetBuyTriggerResponse.ts new file mode 100644 index 0000000..111b099 --- /dev/null +++ b/audit/src/proto/day_trader/SetBuyTriggerResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyTriggerResponse { + 'triggerAmount'?: (number | string); + 'stock'?: (string); + 'success'?: (boolean); +} + +export interface SetBuyTriggerResponse__Output { + 'triggerAmount'?: (number); + 'stock'?: (string); + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/SetSellAmountRequest.ts b/audit/src/proto/day_trader/SetSellAmountRequest.ts new file mode 100644 index 0000000..5b359d6 --- /dev/null +++ b/audit/src/proto/day_trader/SetSellAmountRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellAmountRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetSellAmountRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/audit/src/proto/day_trader/SetSellAmountResponse.ts b/audit/src/proto/day_trader/SetSellAmountResponse.ts new file mode 100644 index 0000000..50be09a --- /dev/null +++ b/audit/src/proto/day_trader/SetSellAmountResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellAmountResponse { + 'currentStockPrice'?: (number | string); + 'numSharesToSell'?: (number | string); + 'success'?: (boolean); +} + +export interface SetSellAmountResponse__Output { + 'currentStockPrice'?: (number); + 'numSharesToSell'?: (number); + 'success'?: (boolean); +} diff --git a/audit/src/proto/day_trader/SetSellTriggerRequest.ts b/audit/src/proto/day_trader/SetSellTriggerRequest.ts new file mode 100644 index 0000000..73eab9f --- /dev/null +++ b/audit/src/proto/day_trader/SetSellTriggerRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellTriggerRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetSellTriggerRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/audit/src/proto/day_trader/SetSellTriggerResponse.ts b/audit/src/proto/day_trader/SetSellTriggerResponse.ts new file mode 100644 index 0000000..845305c --- /dev/null +++ b/audit/src/proto/day_trader/SetSellTriggerResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellTriggerResponse { +} + +export interface SetSellTriggerResponse__Output { +} diff --git a/audit/src/proto/day_trader/Transaction.ts b/audit/src/proto/day_trader/Transaction.ts new file mode 100644 index 0000000..ed17f77 --- /dev/null +++ b/audit/src/proto/day_trader/Transaction.ts @@ -0,0 +1,139 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { AddRequest as _day_trader_AddRequest, AddRequest__Output as _day_trader_AddRequest__Output } from '../day_trader/AddRequest'; +import type { AddResponse as _day_trader_AddResponse, AddResponse__Output as _day_trader_AddResponse__Output } from '../day_trader/AddResponse'; +import type { BuyRequest as _day_trader_BuyRequest, BuyRequest__Output as _day_trader_BuyRequest__Output } from '../day_trader/BuyRequest'; +import type { BuyResponse as _day_trader_BuyResponse, BuyResponse__Output as _day_trader_BuyResponse__Output } from '../day_trader/BuyResponse'; +import type { CancelBuyRequest as _day_trader_CancelBuyRequest, CancelBuyRequest__Output as _day_trader_CancelBuyRequest__Output } from '../day_trader/CancelBuyRequest'; +import type { CancelBuyResponse as _day_trader_CancelBuyResponse, CancelBuyResponse__Output as _day_trader_CancelBuyResponse__Output } from '../day_trader/CancelBuyResponse'; +import type { CancelSellRequest as _day_trader_CancelSellRequest, CancelSellRequest__Output as _day_trader_CancelSellRequest__Output } from '../day_trader/CancelSellRequest'; +import type { CancelSellResponse as _day_trader_CancelSellResponse, CancelSellResponse__Output as _day_trader_CancelSellResponse__Output } from '../day_trader/CancelSellResponse'; +import type { CommitBuyRequest as _day_trader_CommitBuyRequest, CommitBuyRequest__Output as _day_trader_CommitBuyRequest__Output } from '../day_trader/CommitBuyRequest'; +import type { CommitBuyResponse as _day_trader_CommitBuyResponse, CommitBuyResponse__Output as _day_trader_CommitBuyResponse__Output } from '../day_trader/CommitBuyResponse'; +import type { CommitSellRequest as _day_trader_CommitSellRequest, CommitSellRequest__Output as _day_trader_CommitSellRequest__Output } from '../day_trader/CommitSellRequest'; +import type { CommitSellResponse as _day_trader_CommitSellResponse, CommitSellResponse__Output as _day_trader_CommitSellResponse__Output } from '../day_trader/CommitSellResponse'; +import type { CreateUserRequest as _day_trader_CreateUserRequest, CreateUserRequest__Output as _day_trader_CreateUserRequest__Output } from '../day_trader/CreateUserRequest'; +import type { CreateUserResponse as _day_trader_CreateUserResponse, CreateUserResponse__Output as _day_trader_CreateUserResponse__Output } from '../day_trader/CreateUserResponse'; +import type { GetUserRequest as _day_trader_GetUserRequest, GetUserRequest__Output as _day_trader_GetUserRequest__Output } from '../day_trader/GetUserRequest'; +import type { GetUserResponse as _day_trader_GetUserResponse, GetUserResponse__Output as _day_trader_GetUserResponse__Output } from '../day_trader/GetUserResponse'; +import type { SellRequest as _day_trader_SellRequest, SellRequest__Output as _day_trader_SellRequest__Output } from '../day_trader/SellRequest'; +import type { SellResponse as _day_trader_SellResponse, SellResponse__Output as _day_trader_SellResponse__Output } from '../day_trader/SellResponse'; + +export interface TransactionClient extends grpc.Client { + Add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + + Buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + + CancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + + CancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + + CommitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + + CommitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + + CreateUser(argument: _day_trader_CreateUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + CreateUser(argument: _day_trader_CreateUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + CreateUser(argument: _day_trader_CreateUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + CreateUser(argument: _day_trader_CreateUserRequest, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + createUser(argument: _day_trader_CreateUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + createUser(argument: _day_trader_CreateUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + createUser(argument: _day_trader_CreateUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + createUser(argument: _day_trader_CreateUserRequest, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + + GetUser(argument: _day_trader_GetUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + GetUser(argument: _day_trader_GetUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + GetUser(argument: _day_trader_GetUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + GetUser(argument: _day_trader_GetUserRequest, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + getUser(argument: _day_trader_GetUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + getUser(argument: _day_trader_GetUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + getUser(argument: _day_trader_GetUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + getUser(argument: _day_trader_GetUserRequest, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + + Sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface TransactionHandlers extends grpc.UntypedServiceImplementation { + Add: grpc.handleUnaryCall<_day_trader_AddRequest__Output, _day_trader_AddResponse>; + + Buy: grpc.handleUnaryCall<_day_trader_BuyRequest__Output, _day_trader_BuyResponse>; + + CancelBuy: grpc.handleUnaryCall<_day_trader_CancelBuyRequest__Output, _day_trader_CancelBuyResponse>; + + CancelSell: grpc.handleUnaryCall<_day_trader_CancelSellRequest__Output, _day_trader_CancelSellResponse>; + + CommitBuy: grpc.handleUnaryCall<_day_trader_CommitBuyRequest__Output, _day_trader_CommitBuyResponse>; + + CommitSell: grpc.handleUnaryCall<_day_trader_CommitSellRequest__Output, _day_trader_CommitSellResponse>; + + CreateUser: grpc.handleUnaryCall<_day_trader_CreateUserRequest__Output, _day_trader_CreateUserResponse>; + + GetUser: grpc.handleUnaryCall<_day_trader_GetUserRequest__Output, _day_trader_GetUserResponse>; + + Sell: grpc.handleUnaryCall<_day_trader_SellRequest__Output, _day_trader_SellResponse>; + +} + +export interface TransactionDefinition extends grpc.ServiceDefinition { + Add: MethodDefinition<_day_trader_AddRequest, _day_trader_AddResponse, _day_trader_AddRequest__Output, _day_trader_AddResponse__Output> + Buy: MethodDefinition<_day_trader_BuyRequest, _day_trader_BuyResponse, _day_trader_BuyRequest__Output, _day_trader_BuyResponse__Output> + CancelBuy: MethodDefinition<_day_trader_CancelBuyRequest, _day_trader_CancelBuyResponse, _day_trader_CancelBuyRequest__Output, _day_trader_CancelBuyResponse__Output> + CancelSell: MethodDefinition<_day_trader_CancelSellRequest, _day_trader_CancelSellResponse, _day_trader_CancelSellRequest__Output, _day_trader_CancelSellResponse__Output> + CommitBuy: MethodDefinition<_day_trader_CommitBuyRequest, _day_trader_CommitBuyResponse, _day_trader_CommitBuyRequest__Output, _day_trader_CommitBuyResponse__Output> + CommitSell: MethodDefinition<_day_trader_CommitSellRequest, _day_trader_CommitSellResponse, _day_trader_CommitSellRequest__Output, _day_trader_CommitSellResponse__Output> + CreateUser: MethodDefinition<_day_trader_CreateUserRequest, _day_trader_CreateUserResponse, _day_trader_CreateUserRequest__Output, _day_trader_CreateUserResponse__Output> + GetUser: MethodDefinition<_day_trader_GetUserRequest, _day_trader_GetUserResponse, _day_trader_GetUserRequest__Output, _day_trader_GetUserResponse__Output> + Sell: MethodDefinition<_day_trader_SellRequest, _day_trader_SellResponse, _day_trader_SellRequest__Output, _day_trader_SellResponse__Output> +} diff --git a/audit/src/proto/day_trader/Trigger.ts b/audit/src/proto/day_trader/Trigger.ts new file mode 100644 index 0000000..ce9de59 --- /dev/null +++ b/audit/src/proto/day_trader/Trigger.ts @@ -0,0 +1,97 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { CancelSetBuyRequest as _day_trader_CancelSetBuyRequest, CancelSetBuyRequest__Output as _day_trader_CancelSetBuyRequest__Output } from '../day_trader/CancelSetBuyRequest'; +import type { CancelSetBuyResponse as _day_trader_CancelSetBuyResponse, CancelSetBuyResponse__Output as _day_trader_CancelSetBuyResponse__Output } from '../day_trader/CancelSetBuyResponse'; +import type { CancelSetSellRequest as _day_trader_CancelSetSellRequest, CancelSetSellRequest__Output as _day_trader_CancelSetSellRequest__Output } from '../day_trader/CancelSetSellRequest'; +import type { CancelSetSellResponse as _day_trader_CancelSetSellResponse, CancelSetSellResponse__Output as _day_trader_CancelSetSellResponse__Output } from '../day_trader/CancelSetSellResponse'; +import type { SetBuyAmountRequest as _day_trader_SetBuyAmountRequest, SetBuyAmountRequest__Output as _day_trader_SetBuyAmountRequest__Output } from '../day_trader/SetBuyAmountRequest'; +import type { SetBuyAmountResponse as _day_trader_SetBuyAmountResponse, SetBuyAmountResponse__Output as _day_trader_SetBuyAmountResponse__Output } from '../day_trader/SetBuyAmountResponse'; +import type { SetBuyTriggerRequest as _day_trader_SetBuyTriggerRequest, SetBuyTriggerRequest__Output as _day_trader_SetBuyTriggerRequest__Output } from '../day_trader/SetBuyTriggerRequest'; +import type { SetBuyTriggerResponse as _day_trader_SetBuyTriggerResponse, SetBuyTriggerResponse__Output as _day_trader_SetBuyTriggerResponse__Output } from '../day_trader/SetBuyTriggerResponse'; +import type { SetSellAmountRequest as _day_trader_SetSellAmountRequest, SetSellAmountRequest__Output as _day_trader_SetSellAmountRequest__Output } from '../day_trader/SetSellAmountRequest'; +import type { SetSellAmountResponse as _day_trader_SetSellAmountResponse, SetSellAmountResponse__Output as _day_trader_SetSellAmountResponse__Output } from '../day_trader/SetSellAmountResponse'; +import type { SetSellTriggerRequest as _day_trader_SetSellTriggerRequest, SetSellTriggerRequest__Output as _day_trader_SetSellTriggerRequest__Output } from '../day_trader/SetSellTriggerRequest'; +import type { SetSellTriggerResponse as _day_trader_SetSellTriggerResponse, SetSellTriggerResponse__Output as _day_trader_SetSellTriggerResponse__Output } from '../day_trader/SetSellTriggerResponse'; + +export interface TriggerClient extends grpc.Client { + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + + CancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + + SetSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface TriggerHandlers extends grpc.UntypedServiceImplementation { + CancelSetBuy: grpc.handleUnaryCall<_day_trader_CancelSetBuyRequest__Output, _day_trader_CancelSetBuyResponse>; + + CancelSetSell: grpc.handleUnaryCall<_day_trader_CancelSetSellRequest__Output, _day_trader_CancelSetSellResponse>; + + SetBuyAmount: grpc.handleUnaryCall<_day_trader_SetBuyAmountRequest__Output, _day_trader_SetBuyAmountResponse>; + + SetBuyTrigger: grpc.handleUnaryCall<_day_trader_SetBuyTriggerRequest__Output, _day_trader_SetBuyTriggerResponse>; + + SetSellAmount: grpc.handleUnaryCall<_day_trader_SetSellAmountRequest__Output, _day_trader_SetSellAmountResponse>; + + SetSellTrigger: grpc.handleUnaryCall<_day_trader_SetSellTriggerRequest__Output, _day_trader_SetSellTriggerResponse>; + +} + +export interface TriggerDefinition extends grpc.ServiceDefinition { + CancelSetBuy: MethodDefinition<_day_trader_CancelSetBuyRequest, _day_trader_CancelSetBuyResponse, _day_trader_CancelSetBuyRequest__Output, _day_trader_CancelSetBuyResponse__Output> + CancelSetSell: MethodDefinition<_day_trader_CancelSetSellRequest, _day_trader_CancelSetSellResponse, _day_trader_CancelSetSellRequest__Output, _day_trader_CancelSetSellResponse__Output> + SetBuyAmount: MethodDefinition<_day_trader_SetBuyAmountRequest, _day_trader_SetBuyAmountResponse, _day_trader_SetBuyAmountRequest__Output, _day_trader_SetBuyAmountResponse__Output> + SetBuyTrigger: MethodDefinition<_day_trader_SetBuyTriggerRequest, _day_trader_SetBuyTriggerResponse, _day_trader_SetBuyTriggerRequest__Output, _day_trader_SetBuyTriggerResponse__Output> + SetSellAmount: MethodDefinition<_day_trader_SetSellAmountRequest, _day_trader_SetSellAmountResponse, _day_trader_SetSellAmountRequest__Output, _day_trader_SetSellAmountResponse__Output> + SetSellTrigger: MethodDefinition<_day_trader_SetSellTriggerRequest, _day_trader_SetSellTriggerResponse, _day_trader_SetSellTriggerRequest__Output, _day_trader_SetSellTriggerResponse__Output> +} diff --git a/audit/src/proto/day_trader/UserCommand.ts b/audit/src/proto/day_trader/UserCommand.ts new file mode 100644 index 0000000..4d081cf --- /dev/null +++ b/audit/src/proto/day_trader/UserCommand.ts @@ -0,0 +1,23 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface UserCommand { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface UserCommand__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/audit/tsconfig.json b/audit/tsconfig.json index 4579198..df354e1 100644 --- a/audit/tsconfig.json +++ b/audit/tsconfig.json @@ -7,7 +7,8 @@ "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ "strict": true, /* Enable all strict type-checking options. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ + "skipLibCheck": true, /* Skip type checking all .d.ts files. */ + "resolveJsonModule": true /* Projects */ // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ diff --git a/distribution-server/default.conf.template b/distribution-server/default.conf.template index 2c54584..cc4a4af 100644 --- a/distribution-server/default.conf.template +++ b/distribution-server/default.conf.template @@ -3,4 +3,13 @@ server { location /day_trader.Quote { grpc_pass ${QUOTE_SERVER_URI}; } + location /day_trader.Transaction { + grpc_pass ${TRANSACTION_SERVER_URI}; + } + location /day_trader.Trigger { + grpc_pass ${TRIGGER_SERVER_URI}; + } + location /day_trader.Log { + grpc_pass ${LOG_SERVER_URI}; + } } \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 26fcc40..94ff0df 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -12,6 +12,7 @@ "@emotion/react": "latest", "@emotion/server": "latest", "@emotion/styled": "latest", + "@grpc/grpc-js": "latest", "@mui/icons-material": "latest", "@mui/material": "latest", "next": "latest", @@ -585,6 +586,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@grpc/grpc-js": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.11.tgz", + "integrity": "sha512-f/xC+6Z2QKsRJ+VSSFlt4hA5KSRm+PKvMWV8kMPkMgGlFidR6PeIkXrOasIY2roe+WROM6GFQLlgDKfeEZo2YQ==", + "dependencies": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.5.tgz", + "integrity": "sha512-mfcTuMbFowq1wh/Rn5KQl6qb95M21Prej3bewD9dUQMurYGVckGO/Pbe2Ocwto6sD05b/mxZLspvqwx60xO2Rg==", + "dependencies": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", @@ -1169,6 +1200,60 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, "node_modules/@rushstack/eslint-patch": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", @@ -1189,6 +1274,16 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "node_modules/@types/node": { + "version": "18.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==" + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -1419,7 +1514,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -1779,6 +1873,16 @@ "node": ">= 6" } }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -2869,6 +2973,14 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", @@ -3220,6 +3332,14 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3483,12 +3603,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -4111,6 +4241,34 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/protobufjs": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", + "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/protobufjs/node_modules/long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -4283,6 +4441,14 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -4441,6 +4607,24 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/string.prototype.matchall": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", @@ -4492,7 +4676,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -4868,6 +5051,52 @@ "node": ">=0.10.0" } }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -4883,6 +5112,14 @@ "node": ">=0.4" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -4897,6 +5134,31 @@ "node": ">= 6" } }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -5328,6 +5590,27 @@ } } }, + "@grpc/grpc-js": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.11.tgz", + "integrity": "sha512-f/xC+6Z2QKsRJ+VSSFlt4hA5KSRm+PKvMWV8kMPkMgGlFidR6PeIkXrOasIY2roe+WROM6GFQLlgDKfeEZo2YQ==", + "requires": { + "@grpc/proto-loader": "^0.7.0", + "@types/node": ">=12.12.47" + } + }, + "@grpc/proto-loader": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.5.tgz", + "integrity": "sha512-mfcTuMbFowq1wh/Rn5KQl6qb95M21Prej3bewD9dUQMurYGVckGO/Pbe2Ocwto6sD05b/mxZLspvqwx60xO2Rg==", + "requires": { + "@types/long": "^4.0.1", + "lodash.camelcase": "^4.3.0", + "long": "^4.0.0", + "protobufjs": "^7.0.0", + "yargs": "^16.2.0" + } + }, "@humanwhocodes/config-array": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.4.tgz", @@ -5619,6 +5902,60 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, + "@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "requires": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, "@rushstack/eslint-patch": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", @@ -5639,6 +5976,16 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/long": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", + "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" + }, + "@types/node": { + "version": "18.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.2.tgz", + "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==" + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -5797,8 +6144,7 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", @@ -6042,6 +6388,16 @@ } } }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -6895,6 +7251,11 @@ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "peer": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, "get-intrinsic": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", @@ -7149,6 +7510,11 @@ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -7340,12 +7706,22 @@ "p-locate": "^5.0.0" } }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "long": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", + "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -7761,6 +8137,32 @@ } } }, + "protobufjs": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", + "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "dependencies": { + "long": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", + "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" + } + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -7876,6 +8278,11 @@ "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -7980,6 +8387,23 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + } + } + }, "string.prototype.matchall": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", @@ -8022,7 +8446,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -8295,6 +8718,39 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -8307,6 +8763,11 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "dev": true }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -8318,6 +8779,25 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 15230dd..9091a1f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -7,7 +7,8 @@ "build": "next build", "start": "next start", "lint": "next lint", - "post-update": "echo \"codesandbox preview only, need an update\" && yarn upgrade --latest" + "post-update": "echo \"codesandbox preview only, need an update\" && yarn upgrade --latest", + "gen-grpc-types": "proto-loader-gen-types --longs=String --enums=String --defaults --oneofs --grpcLib=@grpc/grpc-js --outDir=proto/ ../protos/day-trader.proto" }, "dependencies": { "@emotion/cache": "latest", @@ -20,7 +21,9 @@ "prop-types": "latest", "react": "latest", "react-dom": "latest", - "react-material-ui-carousel": "^3.4.2" + "react-material-ui-carousel": "^3.4.2", + "@grpc/grpc-js": "latest", + "@grpc/proto-loader": "latest" }, "devDependencies": { "autoprefixer": "^10.4.8", diff --git a/frontend/pages/api/client/definitions.d.ts b/frontend/pages/api/client/definitions.d.ts new file mode 100644 index 0000000..609d690 --- /dev/null +++ b/frontend/pages/api/client/definitions.d.ts @@ -0,0 +1,2 @@ +import {ProtoGrpcType} from "../../../proto/day-trader"; +export const loadPackageDefinition: ProtoGrpcType \ No newline at end of file diff --git a/frontend/pages/api/client/definitions.js b/frontend/pages/api/client/definitions.js new file mode 100644 index 0000000..624571e --- /dev/null +++ b/frontend/pages/api/client/definitions.js @@ -0,0 +1,14 @@ +import grpc from "@grpc/grpc-js" +import protoloader from "@grpc/proto-loader" + +const PROTO_PATH = __dirname + '/../../../protos/route_guide.proto'; + +const packageDefinition = protoloader.loadSync(PROTO_PATH, { + keepCase: true, + longs: String, + enums: String, + defaults: true, + oneofs: true +}) + +export const loadPackageDefinition = grpc.loadPackageDefinition(packageDefinition); diff --git a/frontend/pages/api/client/index.js b/frontend/pages/api/client/index.js new file mode 100644 index 0000000..fe9e8e6 --- /dev/null +++ b/frontend/pages/api/client/index.js @@ -0,0 +1,6 @@ +import {loadPackageDefinition} from "./definitions"; + +export const quoteClient = new loadPackageDefinition.day_trader.Quote(process.env["GRPC_QUOTE_ADDR"]) +export const logClient = new loadPackageDefinition.day_trader.Log(process.env["GRPC_LOG_ADDR"]) +export const transactionClient = new loadPackageDefinition.day_trader.Transaction(process.env["GRPC_TRANSACTION_ADDR"]) +export const triggerClient = new loadPackageDefinition.day_trader.Trigger(process.env["GRPC_TRIGGER_ADDR"]) \ No newline at end of file diff --git a/frontend/pages/api/quote.js b/frontend/pages/api/quote.js new file mode 100644 index 0000000..651a0ec --- /dev/null +++ b/frontend/pages/api/quote.js @@ -0,0 +1,18 @@ +import {quoteClient} from "./client"; + +/** + * @param {string} stockSymbol + * @param {string} userId + * @returns {Promise<{ 'quote'?: (number | string);'sym'?: (string);'userId'?: (string);'timestamp'?: (number | string | Long);'cryptoKey'?: (string); }>} + */ +export default function quote(stockSymbol, userId) { + return new Promise((accept, reject) => { + new quoteClient.Quote({stockSymbol, userId}, (err, value) => { + if (err != null) { + accept(value) + } else { + reject(err) + } + }) + }) +} \ No newline at end of file diff --git a/frontend/proto/day-trader.ts b/frontend/proto/day-trader.ts new file mode 100644 index 0000000..f716dee --- /dev/null +++ b/frontend/proto/day-trader.ts @@ -0,0 +1,55 @@ +import type * as grpc from '@grpc/grpc-js'; +import type { MessageTypeDefinition } from '@grpc/proto-loader'; + +import type { LogClient as _day_trader_LogClient, LogDefinition as _day_trader_LogDefinition } from './day_trader/Log'; +import type { QuoteClient as _day_trader_QuoteClient, QuoteDefinition as _day_trader_QuoteDefinition } from './day_trader/Quote'; +import type { TransactionClient as _day_trader_TransactionClient, TransactionDefinition as _day_trader_TransactionDefinition } from './day_trader/Transaction'; +import type { TriggerClient as _day_trader_TriggerClient, TriggerDefinition as _day_trader_TriggerDefinition } from './day_trader/Trigger'; + +type SubtypeConstructor any, Subtype> = { + new(...args: ConstructorParameters): Subtype; +}; + +export interface ProtoGrpcType { + day_trader: { + AddRequest: MessageTypeDefinition + AddResponse: MessageTypeDefinition + BuyRequest: MessageTypeDefinition + BuyResponse: MessageTypeDefinition + CancelBuyRequest: MessageTypeDefinition + CancelBuyResponse: MessageTypeDefinition + CancelSellRequest: MessageTypeDefinition + CancelSellResponse: MessageTypeDefinition + CancelSetBuyRequest: MessageTypeDefinition + CancelSetBuyResponse: MessageTypeDefinition + CancelSetSellRequest: MessageTypeDefinition + CancelSetSellResponse: MessageTypeDefinition + CommitBuyRequest: MessageTypeDefinition + CommitBuyResponse: MessageTypeDefinition + CommitSellRequest: MessageTypeDefinition + CommitSellResponse: MessageTypeDefinition + DisplaySummaryRequest: MessageTypeDefinition + DisplaySummaryResponse: MessageTypeDefinition + DumpLogRequest: MessageTypeDefinition + DumpLogResponse: MessageTypeDefinition + DumpLogUserRequest: MessageTypeDefinition + DumpLogUserResponse: MessageTypeDefinition + Log: SubtypeConstructor & { service: _day_trader_LogDefinition } + Quote: SubtypeConstructor & { service: _day_trader_QuoteDefinition } + QuoteRequest: MessageTypeDefinition + QuoteResponse: MessageTypeDefinition + SellRequest: MessageTypeDefinition + SellResponse: MessageTypeDefinition + SetBuyAmountRequest: MessageTypeDefinition + SetBuyAmountResponse: MessageTypeDefinition + SetBuyTriggerRequest: MessageTypeDefinition + SetBuyTriggerResponse: MessageTypeDefinition + SetSellAmountRequest: MessageTypeDefinition + SetSellAmountResponse: MessageTypeDefinition + SetSellTriggerRequest: MessageTypeDefinition + SetSellTriggerResponse: MessageTypeDefinition + Transaction: SubtypeConstructor & { service: _day_trader_TransactionDefinition } + Trigger: SubtypeConstructor & { service: _day_trader_TriggerDefinition } + } +} + diff --git a/frontend/proto/day_trader/AddRequest.ts b/frontend/proto/day_trader/AddRequest.ts new file mode 100644 index 0000000..2846f63 --- /dev/null +++ b/frontend/proto/day_trader/AddRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface AddRequest { + 'userId'?: (string); + 'amount'?: (number | string); +} + +export interface AddRequest__Output { + 'userId': (string); + 'amount': (number); +} diff --git a/frontend/proto/day_trader/AddResponse.ts b/frontend/proto/day_trader/AddResponse.ts new file mode 100644 index 0000000..a2599d8 --- /dev/null +++ b/frontend/proto/day_trader/AddResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface AddResponse { +} + +export interface AddResponse__Output { +} diff --git a/frontend/proto/day_trader/BuyRequest.ts b/frontend/proto/day_trader/BuyRequest.ts new file mode 100644 index 0000000..53e54e2 --- /dev/null +++ b/frontend/proto/day_trader/BuyRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface BuyRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface BuyRequest__Output { + 'userId': (string); + 'stockSymbol': (string); + 'amount': (number); +} diff --git a/frontend/proto/day_trader/BuyResponse.ts b/frontend/proto/day_trader/BuyResponse.ts new file mode 100644 index 0000000..da0a158 --- /dev/null +++ b/frontend/proto/day_trader/BuyResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface BuyResponse { +} + +export interface BuyResponse__Output { +} diff --git a/frontend/proto/day_trader/CancelBuyRequest.ts b/frontend/proto/day_trader/CancelBuyRequest.ts new file mode 100644 index 0000000..9f1d7d9 --- /dev/null +++ b/frontend/proto/day_trader/CancelBuyRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelBuyRequest { + 'userId'?: (string); +} + +export interface CancelBuyRequest__Output { + 'userId': (string); +} diff --git a/frontend/proto/day_trader/CancelBuyResponse.ts b/frontend/proto/day_trader/CancelBuyResponse.ts new file mode 100644 index 0000000..2b37dcf --- /dev/null +++ b/frontend/proto/day_trader/CancelBuyResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelBuyResponse { +} + +export interface CancelBuyResponse__Output { +} diff --git a/frontend/proto/day_trader/CancelSellRequest.ts b/frontend/proto/day_trader/CancelSellRequest.ts new file mode 100644 index 0000000..6de7aab --- /dev/null +++ b/frontend/proto/day_trader/CancelSellRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSellRequest { + 'userId'?: (string); +} + +export interface CancelSellRequest__Output { + 'userId': (string); +} diff --git a/frontend/proto/day_trader/CancelSellResponse.ts b/frontend/proto/day_trader/CancelSellResponse.ts new file mode 100644 index 0000000..cc36836 --- /dev/null +++ b/frontend/proto/day_trader/CancelSellResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSellResponse { +} + +export interface CancelSellResponse__Output { +} diff --git a/frontend/proto/day_trader/CancelSetBuyRequest.ts b/frontend/proto/day_trader/CancelSetBuyRequest.ts new file mode 100644 index 0000000..b944051 --- /dev/null +++ b/frontend/proto/day_trader/CancelSetBuyRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetBuyRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface CancelSetBuyRequest__Output { + 'userId': (string); + 'stockSymbol': (string); +} diff --git a/frontend/proto/day_trader/CancelSetBuyResponse.ts b/frontend/proto/day_trader/CancelSetBuyResponse.ts new file mode 100644 index 0000000..4172938 --- /dev/null +++ b/frontend/proto/day_trader/CancelSetBuyResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetBuyResponse { +} + +export interface CancelSetBuyResponse__Output { +} diff --git a/frontend/proto/day_trader/CancelSetSellRequest.ts b/frontend/proto/day_trader/CancelSetSellRequest.ts new file mode 100644 index 0000000..df2dfef --- /dev/null +++ b/frontend/proto/day_trader/CancelSetSellRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetSellRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface CancelSetSellRequest__Output { + 'userId': (string); + 'stockSymbol': (string); +} diff --git a/frontend/proto/day_trader/CancelSetSellResponse.ts b/frontend/proto/day_trader/CancelSetSellResponse.ts new file mode 100644 index 0000000..a2b34e9 --- /dev/null +++ b/frontend/proto/day_trader/CancelSetSellResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetSellResponse { +} + +export interface CancelSetSellResponse__Output { +} diff --git a/frontend/proto/day_trader/CommitBuyRequest.ts b/frontend/proto/day_trader/CommitBuyRequest.ts new file mode 100644 index 0000000..5aa2b6a --- /dev/null +++ b/frontend/proto/day_trader/CommitBuyRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitBuyRequest { + 'userId'?: (string); +} + +export interface CommitBuyRequest__Output { + 'userId': (string); +} diff --git a/frontend/proto/day_trader/CommitBuyResponse.ts b/frontend/proto/day_trader/CommitBuyResponse.ts new file mode 100644 index 0000000..201771c --- /dev/null +++ b/frontend/proto/day_trader/CommitBuyResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitBuyResponse { +} + +export interface CommitBuyResponse__Output { +} diff --git a/frontend/proto/day_trader/CommitSellRequest.ts b/frontend/proto/day_trader/CommitSellRequest.ts new file mode 100644 index 0000000..43b7d20 --- /dev/null +++ b/frontend/proto/day_trader/CommitSellRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitSellRequest { + 'userId'?: (string); +} + +export interface CommitSellRequest__Output { + 'userId': (string); +} diff --git a/frontend/proto/day_trader/CommitSellResponse.ts b/frontend/proto/day_trader/CommitSellResponse.ts new file mode 100644 index 0000000..1f59802 --- /dev/null +++ b/frontend/proto/day_trader/CommitSellResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitSellResponse { +} + +export interface CommitSellResponse__Output { +} diff --git a/frontend/proto/day_trader/DisplaySummaryRequest.ts b/frontend/proto/day_trader/DisplaySummaryRequest.ts new file mode 100644 index 0000000..e624ed3 --- /dev/null +++ b/frontend/proto/day_trader/DisplaySummaryRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DisplaySummaryRequest { + 'userId'?: (string); +} + +export interface DisplaySummaryRequest__Output { + 'userId': (string); +} diff --git a/frontend/proto/day_trader/DisplaySummaryResponse.ts b/frontend/proto/day_trader/DisplaySummaryResponse.ts new file mode 100644 index 0000000..5186a14 --- /dev/null +++ b/frontend/proto/day_trader/DisplaySummaryResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface DisplaySummaryResponse { +} + +export interface DisplaySummaryResponse__Output { +} diff --git a/frontend/proto/day_trader/DumpLogRequest.ts b/frontend/proto/day_trader/DumpLogRequest.ts new file mode 100644 index 0000000..998819e --- /dev/null +++ b/frontend/proto/day_trader/DumpLogRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogRequest { + 'filename'?: (string); +} + +export interface DumpLogRequest__Output { + 'filename': (string); +} diff --git a/frontend/proto/day_trader/DumpLogResponse.ts b/frontend/proto/day_trader/DumpLogResponse.ts new file mode 100644 index 0000000..e582651 --- /dev/null +++ b/frontend/proto/day_trader/DumpLogResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogResponse { +} + +export interface DumpLogResponse__Output { +} diff --git a/frontend/proto/day_trader/DumpLogUserRequest.ts b/frontend/proto/day_trader/DumpLogUserRequest.ts new file mode 100644 index 0000000..3a5084d --- /dev/null +++ b/frontend/proto/day_trader/DumpLogUserRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogUserRequest { + 'userId'?: (string); + 'filename'?: (string); +} + +export interface DumpLogUserRequest__Output { + 'userId': (string); + 'filename': (string); +} diff --git a/frontend/proto/day_trader/DumpLogUserResponse.ts b/frontend/proto/day_trader/DumpLogUserResponse.ts new file mode 100644 index 0000000..a944a56 --- /dev/null +++ b/frontend/proto/day_trader/DumpLogUserResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogUserResponse { +} + +export interface DumpLogUserResponse__Output { +} diff --git a/frontend/proto/day_trader/Log.ts b/frontend/proto/day_trader/Log.ts new file mode 100644 index 0000000..a98b516 --- /dev/null +++ b/frontend/proto/day_trader/Log.ts @@ -0,0 +1,55 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { DisplaySummaryRequest as _day_trader_DisplaySummaryRequest, DisplaySummaryRequest__Output as _day_trader_DisplaySummaryRequest__Output } from '../day_trader/DisplaySummaryRequest'; +import type { DisplaySummaryResponse as _day_trader_DisplaySummaryResponse, DisplaySummaryResponse__Output as _day_trader_DisplaySummaryResponse__Output } from '../day_trader/DisplaySummaryResponse'; +import type { DumpLogRequest as _day_trader_DumpLogRequest, DumpLogRequest__Output as _day_trader_DumpLogRequest__Output } from '../day_trader/DumpLogRequest'; +import type { DumpLogResponse as _day_trader_DumpLogResponse, DumpLogResponse__Output as _day_trader_DumpLogResponse__Output } from '../day_trader/DumpLogResponse'; +import type { DumpLogUserRequest as _day_trader_DumpLogUserRequest, DumpLogUserRequest__Output as _day_trader_DumpLogUserRequest__Output } from '../day_trader/DumpLogUserRequest'; +import type { DumpLogUserResponse as _day_trader_DumpLogUserResponse, DumpLogUserResponse__Output as _day_trader_DumpLogUserResponse__Output } from '../day_trader/DumpLogUserResponse'; + +export interface LogClient extends grpc.Client { + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + + DumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + + DumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface LogHandlers extends grpc.UntypedServiceImplementation { + DisplaySummary: grpc.handleUnaryCall<_day_trader_DisplaySummaryRequest__Output, _day_trader_DisplaySummaryResponse>; + + DumpLog: grpc.handleUnaryCall<_day_trader_DumpLogRequest__Output, _day_trader_DumpLogResponse>; + + DumpLogUser: grpc.handleUnaryCall<_day_trader_DumpLogUserRequest__Output, _day_trader_DumpLogUserResponse>; + +} + +export interface LogDefinition extends grpc.ServiceDefinition { + DisplaySummary: MethodDefinition<_day_trader_DisplaySummaryRequest, _day_trader_DisplaySummaryResponse, _day_trader_DisplaySummaryRequest__Output, _day_trader_DisplaySummaryResponse__Output> + DumpLog: MethodDefinition<_day_trader_DumpLogRequest, _day_trader_DumpLogResponse, _day_trader_DumpLogRequest__Output, _day_trader_DumpLogResponse__Output> + DumpLogUser: MethodDefinition<_day_trader_DumpLogUserRequest, _day_trader_DumpLogUserResponse, _day_trader_DumpLogUserRequest__Output, _day_trader_DumpLogUserResponse__Output> +} diff --git a/frontend/proto/day_trader/Quote.ts b/frontend/proto/day_trader/Quote.ts new file mode 100644 index 0000000..427f5a4 --- /dev/null +++ b/frontend/proto/day_trader/Quote.ts @@ -0,0 +1,27 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { QuoteRequest as _day_trader_QuoteRequest, QuoteRequest__Output as _day_trader_QuoteRequest__Output } from '../day_trader/QuoteRequest'; +import type { QuoteResponse as _day_trader_QuoteResponse, QuoteResponse__Output as _day_trader_QuoteResponse__Output } from '../day_trader/QuoteResponse'; + +export interface QuoteClient extends grpc.Client { + Quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface QuoteHandlers extends grpc.UntypedServiceImplementation { + Quote: grpc.handleUnaryCall<_day_trader_QuoteRequest__Output, _day_trader_QuoteResponse>; + +} + +export interface QuoteDefinition extends grpc.ServiceDefinition { + Quote: MethodDefinition<_day_trader_QuoteRequest, _day_trader_QuoteResponse, _day_trader_QuoteRequest__Output, _day_trader_QuoteResponse__Output> +} diff --git a/frontend/proto/day_trader/QuoteRequest.ts b/frontend/proto/day_trader/QuoteRequest.ts new file mode 100644 index 0000000..ce8823d --- /dev/null +++ b/frontend/proto/day_trader/QuoteRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface QuoteRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface QuoteRequest__Output { + 'userId': (string); + 'stockSymbol': (string); +} diff --git a/frontend/proto/day_trader/QuoteResponse.ts b/frontend/proto/day_trader/QuoteResponse.ts new file mode 100644 index 0000000..752d77b --- /dev/null +++ b/frontend/proto/day_trader/QuoteResponse.ts @@ -0,0 +1,19 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface QuoteResponse { + 'quote'?: (number | string); + 'sym'?: (string); + 'userId'?: (string); + 'timestamp'?: (number | string | Long); + 'cryptoKey'?: (string); +} + +export interface QuoteResponse__Output { + 'quote': (number); + 'sym': (string); + 'userId': (string); + 'timestamp': (string); + 'cryptoKey': (string); +} diff --git a/frontend/proto/day_trader/SellRequest.ts b/frontend/proto/day_trader/SellRequest.ts new file mode 100644 index 0000000..da01242 --- /dev/null +++ b/frontend/proto/day_trader/SellRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SellRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SellRequest__Output { + 'userId': (string); + 'stockSymbol': (string); + 'amount': (number); +} diff --git a/frontend/proto/day_trader/SellResponse.ts b/frontend/proto/day_trader/SellResponse.ts new file mode 100644 index 0000000..98c546a --- /dev/null +++ b/frontend/proto/day_trader/SellResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface SellResponse { +} + +export interface SellResponse__Output { +} diff --git a/frontend/proto/day_trader/SetBuyAmountRequest.ts b/frontend/proto/day_trader/SetBuyAmountRequest.ts new file mode 100644 index 0000000..56dde72 --- /dev/null +++ b/frontend/proto/day_trader/SetBuyAmountRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyAmountRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetBuyAmountRequest__Output { + 'userId': (string); + 'stockSymbol': (string); + 'amount': (number); +} diff --git a/frontend/proto/day_trader/SetBuyAmountResponse.ts b/frontend/proto/day_trader/SetBuyAmountResponse.ts new file mode 100644 index 0000000..4dd0662 --- /dev/null +++ b/frontend/proto/day_trader/SetBuyAmountResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyAmountResponse { +} + +export interface SetBuyAmountResponse__Output { +} diff --git a/frontend/proto/day_trader/SetBuyTriggerRequest.ts b/frontend/proto/day_trader/SetBuyTriggerRequest.ts new file mode 100644 index 0000000..26415f0 --- /dev/null +++ b/frontend/proto/day_trader/SetBuyTriggerRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyTriggerRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetBuyTriggerRequest__Output { + 'userId': (string); + 'stockSymbol': (string); + 'amount': (number); +} diff --git a/frontend/proto/day_trader/SetBuyTriggerResponse.ts b/frontend/proto/day_trader/SetBuyTriggerResponse.ts new file mode 100644 index 0000000..b2d7df4 --- /dev/null +++ b/frontend/proto/day_trader/SetBuyTriggerResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyTriggerResponse { +} + +export interface SetBuyTriggerResponse__Output { +} diff --git a/frontend/proto/day_trader/SetSellAmountRequest.ts b/frontend/proto/day_trader/SetSellAmountRequest.ts new file mode 100644 index 0000000..ea9c4af --- /dev/null +++ b/frontend/proto/day_trader/SetSellAmountRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellAmountRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetSellAmountRequest__Output { + 'userId': (string); + 'stockSymbol': (string); + 'amount': (number); +} diff --git a/frontend/proto/day_trader/SetSellAmountResponse.ts b/frontend/proto/day_trader/SetSellAmountResponse.ts new file mode 100644 index 0000000..0ff5627 --- /dev/null +++ b/frontend/proto/day_trader/SetSellAmountResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellAmountResponse { +} + +export interface SetSellAmountResponse__Output { +} diff --git a/frontend/proto/day_trader/SetSellTriggerRequest.ts b/frontend/proto/day_trader/SetSellTriggerRequest.ts new file mode 100644 index 0000000..b996e74 --- /dev/null +++ b/frontend/proto/day_trader/SetSellTriggerRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellTriggerRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetSellTriggerRequest__Output { + 'userId': (string); + 'stockSymbol': (string); + 'amount': (number); +} diff --git a/frontend/proto/day_trader/SetSellTriggerResponse.ts b/frontend/proto/day_trader/SetSellTriggerResponse.ts new file mode 100644 index 0000000..845305c --- /dev/null +++ b/frontend/proto/day_trader/SetSellTriggerResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellTriggerResponse { +} + +export interface SetSellTriggerResponse__Output { +} diff --git a/frontend/proto/day_trader/Transaction.ts b/frontend/proto/day_trader/Transaction.ts new file mode 100644 index 0000000..a16e90f --- /dev/null +++ b/frontend/proto/day_trader/Transaction.ts @@ -0,0 +1,111 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { AddRequest as _day_trader_AddRequest, AddRequest__Output as _day_trader_AddRequest__Output } from '../day_trader/AddRequest'; +import type { AddResponse as _day_trader_AddResponse, AddResponse__Output as _day_trader_AddResponse__Output } from '../day_trader/AddResponse'; +import type { BuyRequest as _day_trader_BuyRequest, BuyRequest__Output as _day_trader_BuyRequest__Output } from '../day_trader/BuyRequest'; +import type { BuyResponse as _day_trader_BuyResponse, BuyResponse__Output as _day_trader_BuyResponse__Output } from '../day_trader/BuyResponse'; +import type { CancelBuyRequest as _day_trader_CancelBuyRequest, CancelBuyRequest__Output as _day_trader_CancelBuyRequest__Output } from '../day_trader/CancelBuyRequest'; +import type { CancelBuyResponse as _day_trader_CancelBuyResponse, CancelBuyResponse__Output as _day_trader_CancelBuyResponse__Output } from '../day_trader/CancelBuyResponse'; +import type { CancelSellRequest as _day_trader_CancelSellRequest, CancelSellRequest__Output as _day_trader_CancelSellRequest__Output } from '../day_trader/CancelSellRequest'; +import type { CancelSellResponse as _day_trader_CancelSellResponse, CancelSellResponse__Output as _day_trader_CancelSellResponse__Output } from '../day_trader/CancelSellResponse'; +import type { CommitBuyRequest as _day_trader_CommitBuyRequest, CommitBuyRequest__Output as _day_trader_CommitBuyRequest__Output } from '../day_trader/CommitBuyRequest'; +import type { CommitBuyResponse as _day_trader_CommitBuyResponse, CommitBuyResponse__Output as _day_trader_CommitBuyResponse__Output } from '../day_trader/CommitBuyResponse'; +import type { CommitSellRequest as _day_trader_CommitSellRequest, CommitSellRequest__Output as _day_trader_CommitSellRequest__Output } from '../day_trader/CommitSellRequest'; +import type { CommitSellResponse as _day_trader_CommitSellResponse, CommitSellResponse__Output as _day_trader_CommitSellResponse__Output } from '../day_trader/CommitSellResponse'; +import type { SellRequest as _day_trader_SellRequest, SellRequest__Output as _day_trader_SellRequest__Output } from '../day_trader/SellRequest'; +import type { SellResponse as _day_trader_SellResponse, SellResponse__Output as _day_trader_SellResponse__Output } from '../day_trader/SellResponse'; + +export interface TransactionClient extends grpc.Client { + Add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + + Buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + + CancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + + CancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + + CommitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + + CommitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + + Sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface TransactionHandlers extends grpc.UntypedServiceImplementation { + Add: grpc.handleUnaryCall<_day_trader_AddRequest__Output, _day_trader_AddResponse>; + + Buy: grpc.handleUnaryCall<_day_trader_BuyRequest__Output, _day_trader_BuyResponse>; + + CancelBuy: grpc.handleUnaryCall<_day_trader_CancelBuyRequest__Output, _day_trader_CancelBuyResponse>; + + CancelSell: grpc.handleUnaryCall<_day_trader_CancelSellRequest__Output, _day_trader_CancelSellResponse>; + + CommitBuy: grpc.handleUnaryCall<_day_trader_CommitBuyRequest__Output, _day_trader_CommitBuyResponse>; + + CommitSell: grpc.handleUnaryCall<_day_trader_CommitSellRequest__Output, _day_trader_CommitSellResponse>; + + Sell: grpc.handleUnaryCall<_day_trader_SellRequest__Output, _day_trader_SellResponse>; + +} + +export interface TransactionDefinition extends grpc.ServiceDefinition { + Add: MethodDefinition<_day_trader_AddRequest, _day_trader_AddResponse, _day_trader_AddRequest__Output, _day_trader_AddResponse__Output> + Buy: MethodDefinition<_day_trader_BuyRequest, _day_trader_BuyResponse, _day_trader_BuyRequest__Output, _day_trader_BuyResponse__Output> + CancelBuy: MethodDefinition<_day_trader_CancelBuyRequest, _day_trader_CancelBuyResponse, _day_trader_CancelBuyRequest__Output, _day_trader_CancelBuyResponse__Output> + CancelSell: MethodDefinition<_day_trader_CancelSellRequest, _day_trader_CancelSellResponse, _day_trader_CancelSellRequest__Output, _day_trader_CancelSellResponse__Output> + CommitBuy: MethodDefinition<_day_trader_CommitBuyRequest, _day_trader_CommitBuyResponse, _day_trader_CommitBuyRequest__Output, _day_trader_CommitBuyResponse__Output> + CommitSell: MethodDefinition<_day_trader_CommitSellRequest, _day_trader_CommitSellResponse, _day_trader_CommitSellRequest__Output, _day_trader_CommitSellResponse__Output> + Sell: MethodDefinition<_day_trader_SellRequest, _day_trader_SellResponse, _day_trader_SellRequest__Output, _day_trader_SellResponse__Output> +} diff --git a/frontend/proto/day_trader/Trigger.ts b/frontend/proto/day_trader/Trigger.ts new file mode 100644 index 0000000..ce9de59 --- /dev/null +++ b/frontend/proto/day_trader/Trigger.ts @@ -0,0 +1,97 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { CancelSetBuyRequest as _day_trader_CancelSetBuyRequest, CancelSetBuyRequest__Output as _day_trader_CancelSetBuyRequest__Output } from '../day_trader/CancelSetBuyRequest'; +import type { CancelSetBuyResponse as _day_trader_CancelSetBuyResponse, CancelSetBuyResponse__Output as _day_trader_CancelSetBuyResponse__Output } from '../day_trader/CancelSetBuyResponse'; +import type { CancelSetSellRequest as _day_trader_CancelSetSellRequest, CancelSetSellRequest__Output as _day_trader_CancelSetSellRequest__Output } from '../day_trader/CancelSetSellRequest'; +import type { CancelSetSellResponse as _day_trader_CancelSetSellResponse, CancelSetSellResponse__Output as _day_trader_CancelSetSellResponse__Output } from '../day_trader/CancelSetSellResponse'; +import type { SetBuyAmountRequest as _day_trader_SetBuyAmountRequest, SetBuyAmountRequest__Output as _day_trader_SetBuyAmountRequest__Output } from '../day_trader/SetBuyAmountRequest'; +import type { SetBuyAmountResponse as _day_trader_SetBuyAmountResponse, SetBuyAmountResponse__Output as _day_trader_SetBuyAmountResponse__Output } from '../day_trader/SetBuyAmountResponse'; +import type { SetBuyTriggerRequest as _day_trader_SetBuyTriggerRequest, SetBuyTriggerRequest__Output as _day_trader_SetBuyTriggerRequest__Output } from '../day_trader/SetBuyTriggerRequest'; +import type { SetBuyTriggerResponse as _day_trader_SetBuyTriggerResponse, SetBuyTriggerResponse__Output as _day_trader_SetBuyTriggerResponse__Output } from '../day_trader/SetBuyTriggerResponse'; +import type { SetSellAmountRequest as _day_trader_SetSellAmountRequest, SetSellAmountRequest__Output as _day_trader_SetSellAmountRequest__Output } from '../day_trader/SetSellAmountRequest'; +import type { SetSellAmountResponse as _day_trader_SetSellAmountResponse, SetSellAmountResponse__Output as _day_trader_SetSellAmountResponse__Output } from '../day_trader/SetSellAmountResponse'; +import type { SetSellTriggerRequest as _day_trader_SetSellTriggerRequest, SetSellTriggerRequest__Output as _day_trader_SetSellTriggerRequest__Output } from '../day_trader/SetSellTriggerRequest'; +import type { SetSellTriggerResponse as _day_trader_SetSellTriggerResponse, SetSellTriggerResponse__Output as _day_trader_SetSellTriggerResponse__Output } from '../day_trader/SetSellTriggerResponse'; + +export interface TriggerClient extends grpc.Client { + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + + CancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + + SetSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface TriggerHandlers extends grpc.UntypedServiceImplementation { + CancelSetBuy: grpc.handleUnaryCall<_day_trader_CancelSetBuyRequest__Output, _day_trader_CancelSetBuyResponse>; + + CancelSetSell: grpc.handleUnaryCall<_day_trader_CancelSetSellRequest__Output, _day_trader_CancelSetSellResponse>; + + SetBuyAmount: grpc.handleUnaryCall<_day_trader_SetBuyAmountRequest__Output, _day_trader_SetBuyAmountResponse>; + + SetBuyTrigger: grpc.handleUnaryCall<_day_trader_SetBuyTriggerRequest__Output, _day_trader_SetBuyTriggerResponse>; + + SetSellAmount: grpc.handleUnaryCall<_day_trader_SetSellAmountRequest__Output, _day_trader_SetSellAmountResponse>; + + SetSellTrigger: grpc.handleUnaryCall<_day_trader_SetSellTriggerRequest__Output, _day_trader_SetSellTriggerResponse>; + +} + +export interface TriggerDefinition extends grpc.ServiceDefinition { + CancelSetBuy: MethodDefinition<_day_trader_CancelSetBuyRequest, _day_trader_CancelSetBuyResponse, _day_trader_CancelSetBuyRequest__Output, _day_trader_CancelSetBuyResponse__Output> + CancelSetSell: MethodDefinition<_day_trader_CancelSetSellRequest, _day_trader_CancelSetSellResponse, _day_trader_CancelSetSellRequest__Output, _day_trader_CancelSetSellResponse__Output> + SetBuyAmount: MethodDefinition<_day_trader_SetBuyAmountRequest, _day_trader_SetBuyAmountResponse, _day_trader_SetBuyAmountRequest__Output, _day_trader_SetBuyAmountResponse__Output> + SetBuyTrigger: MethodDefinition<_day_trader_SetBuyTriggerRequest, _day_trader_SetBuyTriggerResponse, _day_trader_SetBuyTriggerRequest__Output, _day_trader_SetBuyTriggerResponse__Output> + SetSellAmount: MethodDefinition<_day_trader_SetSellAmountRequest, _day_trader_SetSellAmountResponse, _day_trader_SetSellAmountRequest__Output, _day_trader_SetSellAmountResponse__Output> + SetSellTrigger: MethodDefinition<_day_trader_SetSellTriggerRequest, _day_trader_SetSellTriggerResponse, _day_trader_SetSellTriggerRequest__Output, _day_trader_SetSellTriggerResponse__Output> +} diff --git a/protos/day-trader.proto b/protos/day-trader.proto index eefaff9..959ec80 100644 --- a/protos/day-trader.proto +++ b/protos/day-trader.proto @@ -13,6 +13,16 @@ service Log { rpc DumpLog(DumpLogRequest) returns (DumpLogResponse); // Provides a summary to the client of the given user's transaction history and the current status of their accounts as well as any set buy or sell triggers and their parameters rpc DisplaySummary(DisplaySummaryRequest) returns (DisplaySummaryResponse); + // insert UserCommand into log db + rpc InsertUserCommand(InsertUserCommandRequest) returns (InsertUserCommandResponse); + // insert AccountTransaction into log db + rpc InsertAccountTransaction(InsertAccountTransactionRequest) returns (InsertAccountTransactionResponse); + // insert SystemEvent into log db + rpc InsertSystemEvent(InsertSystemEventRequest) returns (InsertSystemEventResponse); + // insert QuoteServer into log db + rpc InsertQuoteServer(InsertQuoteServerRequest) returns (InsertQuoteServerResponse); + // insert ErrorEvent into log db + rpc InsertErrorEvent(InsertErrorEventRequest) returns (InsertErrorEventResponse); } service Transaction { @@ -30,6 +40,10 @@ service Transaction { rpc CommitSell(CommitSellRequest) returns (CommitSellResponse); // Cancels the most recently executed SELL Command rpc CancelSell(CancelSellRequest) returns (CancelSellResponse); + // Gets the users balance and stocks owned + rpc GetUser(GetUserRequest) returns (GetUserResponse); + // Creates a user + rpc CreateUser(CreateUserRequest) returns (CreateUserResponse); } service Trigger { @@ -48,14 +62,16 @@ service Trigger { } message AddRequest { - string user_id = 1;; + string user_id = 1; float amount = 2; } -message AddResponse {} +message AddResponse { + float balance = 1; +} message QuoteRequest { - string user_id = 1;; + string user_id = 1; string stock_symbol = 2; } @@ -68,66 +84,144 @@ message QuoteResponse { } message BuyRequest { - string user_id = 1;; + string user_id = 1; string stock_symbol = 2; float amount = 3; } -message BuyResponse {} +message BuyResponse { + float shares = 1; + bool success = 2; +} message CommitBuyRequest{ - string user_id = 1;; + string user_id = 1; } -message CommitBuyResponse {} +message CommitBuyResponse { + float stocksOwned = 1; + float balance = 2; + bool success = 3; +} message CancelBuyRequest {string user_id = 1;} -message CancelBuyResponse {} +message CancelBuyResponse { + bool success = 1; +} message SellRequest { - string user_id = 1;; + string user_id = 1; string stock_symbol = 2; float amount = 3; } -message SellResponse {} +message SellResponse { + float amount = 1; + float shares = 2; + bool success = 3; +} message CommitSellRequest { string user_id = 1; } -message CommitSellResponse {} +message CommitSellResponse { + float stocksOwned = 1; + float balance = 2; + bool success = 3; +} message CancelSellRequest { string user_id = 1; } -message CancelSellResponse {} +message CancelSellResponse { + bool success = 1; +} +message GetUserRequest { + string user_id = 1; +} +message GetUserResponse { + string username = 1; + float balance = 2; + string role = 3; + bool success = 4; + repeated OwnedStock owned_stock = 5; + repeated BuyTrigger buy_triggers = 6; + repeated SellTrigger sell_triggers = 7; +} + +message OwnedStock { + int32 id = 1; + string username = 2; + string stock = 3; + float shares = 4; +} + +message BuyTrigger { + int32 id = 1; + string username = 2; + string stock = 3; + float trigger_amount = 4; + float buy_amount = 5; +} + +message SellTrigger { + int32 id = 1; + string username = 2; + string stock = 3; + float trigger_amount = 4; + float shares_to_sell = 5; +} + +message CreateUserRequest { + string user_id = 1; +} +message CreateUserResponse { + string username = 1; + bool success = 2; +} message SetBuyAmountRequest { string user_id = 1; string stock_symbol = 2; float amount = 3; } -message SetBuyAmountResponse {} +message SetBuyAmountResponse { + float balance = 1; + float buy_amount = 2; + bool success = 3; +} message CancelSetBuyRequest { string user_id = 1; string stock_symbol = 2; } -message CancelSetBuyResponse {} +message CancelSetBuyResponse { + bool success = 1; +} message SetBuyTriggerRequest { string user_id = 1; string stock_symbol = 2; float amount = 3; } -message SetBuyTriggerResponse {} +message SetBuyTriggerResponse { + float trigger_amount = 1; + string stock = 2; + bool success = 3; +} message SetSellAmountRequest { string user_id = 1; string stock_symbol = 2; float amount = 3; } -message SetSellAmountResponse {} +message SetSellAmountResponse { + float currentStockPrice = 1; + float numSharesToSell = 2; + bool success = 3; +} message SetSellTriggerRequest { string user_id = 1; string stock_symbol = 2; float amount = 3; } -message SetSellTriggerResponse {} +message SetSellTriggerResponse { + +} message CancelSetSellRequest { string user_id = 1; string stock_symbol = 2; @@ -137,12 +231,125 @@ message DumpLogUserRequest { string user_id = 1; string filename = 2; } -message DumpLogUserResponse {} +message DumpLogUserResponse { + string xml = 1; +} message DumpLogRequest { string filename = 1; } -message DumpLogResponse {} +message DumpLogResponse { + string xml = 1; +} message DisplaySummaryRequest { string user_id = 1; } -message DisplaySummaryResponse {} \ No newline at end of file +message DisplaySummaryResponse { + repeated UserCommand user_commands = 1; + repeated AccountTransaction account_transactions = 2; +} + +message UserCommand { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message AccountTransaction { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string action = 4; + string username = 5; + float funds = 6; +} + +message InsertUserCommandRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; +} +message InsertUserCommandResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message InsertAccountTransactionRequest { + string server = 1; + string action = 2; + string username = 3; + float funds = 4; +} +message InsertAccountTransactionResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string action = 4; + string username = 5; + float funds = 6; +} + +message InsertSystemEventRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; +} +message InsertSystemEventResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message InsertQuoteServerRequest { + string server = 1; + int64 quoteServerTime = 2; + string username = 3; + string stockSymbol = 4; + float price = 5; + string cryptokey = 6; +} +message InsertQuoteServerResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + int64 quote_server_time = 4; + string username = 5; + string stock_symbol = 6; + float price = 7; + string crypto_key = 8; +} + +message InsertErrorEventRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; + string errorMessage = 6; +} +message InsertErrorEventResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; + string error_message = 8; +} \ No newline at end of file diff --git a/transaction/Dockerfile b/transaction/Dockerfile index 3e645ef..bb3bfd3 100644 --- a/transaction/Dockerfile +++ b/transaction/Dockerfile @@ -8,9 +8,7 @@ COPY . . RUN npm install RUN npx prisma generate -RUN npm run build - EXPOSE 50051 -CMD ["npm", "run", "docker"] \ No newline at end of file +CMD npx prisma db push && npm run dev \ No newline at end of file diff --git a/transaction/cmd.sh b/transaction/cmd.sh deleted file mode 100644 index 142ae92..0000000 --- a/transaction/cmd.sh +++ /dev/null @@ -1,4 +0,0 @@ -npx prisma db push -npx prisma migrate deploy -npx prisma db seed -npm start \ No newline at end of file diff --git a/transaction/package.json b/transaction/package.json index 8ed1886..e195293 100644 --- a/transaction/package.json +++ b/transaction/package.json @@ -13,7 +13,8 @@ "build": "tsc", "dev": "nodemon src/index.ts", "docker": "chmod +x ./cmd.sh; ./cmd.sh", - "start": "node dist/src/index.js" + "start": "node dist/src/index.js", + "gen-grpc-types": "npx proto-loader-gen-types --grpcLib=@grpc/grpc-js --outDir=src/proto/ ../protos/day-trader.proto && cp ../protos/day-trader.proto src/proto/day-trader-copy.proto" }, "keywords": [], "author": "", diff --git a/transaction/prisma/dummy_data/BuySellTriggers.ts b/transaction/prisma/dummy_data/BuySellTriggers.ts deleted file mode 100644 index 20c1720..0000000 --- a/transaction/prisma/dummy_data/BuySellTriggers.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { TriggerType } from '@prisma/client'; - -export const BuySellTriggers = [ - { - username: "John", - stock: "ABC", - type: TriggerType.SELL, - amount: 542.25, - }, - { - username: "Jane", - stock: "XYZ", - type: TriggerType.BUY, - amount: 123.45, - }, - { - username: "Bob", - stock: "DEF", - type: TriggerType.SELL, - amount: 987.65, - }, - { - username: "Alice", - stock: "GHI", - type: TriggerType.BUY, - amount: 654.32, - }, - { - username: "David", - stock: "JKL", - type: TriggerType.SELL, - amount: 321.09, - }, - { - username: "Samantha", - stock: "MNO", - type: TriggerType.BUY, - amount: 456.78, - }, - { - username: "Tom", - stock: "PQR", - type: TriggerType.SELL, - amount: 789.01, - }, - { - username: "Emily", - stock: "STU", - type: TriggerType.BUY, - amount: 234.56, - }, - { - username: "Mike", - stock: "VWX", - type: TriggerType.SELL, - amount: 890.12, - }, - { - username: "Jessica", - stock: "YZA", - type: TriggerType.BUY, - amount: 567.89, - }, - { - username: "William", - stock: "BCD", - type: TriggerType.SELL, - amount: 432.1, - }, - { - username: "Linda", - stock: "EFG", - type: TriggerType.BUY, - amount: 765.43, - }, - { - username: "Chris", - stock: "HIJ", - type: TriggerType.SELL, - amount: 901.23, - }, - { - username: "Megan", - stock: "KLM", - type: TriggerType.BUY, - amount: 234.56, - }, - { - username: "Jason", - stock: "NOP", - type: TriggerType.SELL, - amount: 789.01, - }, -]; diff --git a/transaction/prisma/dummy_data/BuyTriggers.ts b/transaction/prisma/dummy_data/BuyTriggers.ts new file mode 100644 index 0000000..023ab4d --- /dev/null +++ b/transaction/prisma/dummy_data/BuyTriggers.ts @@ -0,0 +1,92 @@ +export const BuyTriggers = [ + { + username: "John", + stock: "ABC", + buyAmount: 5000.00, + triggerAmount: 542.25, + }, + { + username: "Jane", + stock: "XYZ", + buyAmount: 123.45, + triggerAmount: null, + }, + { + username: "Bob", + stock: "DEF", + buyAmount: 5000.00, + triggerAmount: 987.65, + }, + { + username: "Alice", + stock: "GHI", + buyAmount: 654.32, + triggerAmount: null, + }, + { + username: "David", + stock: "JKL", + buyAmount: 5000.00, + triggerAmount: 321.09, + }, + { + username: "Samantha", + stock: "MNO", + buyAmount: 456.78, + triggerAmount: null, + }, + { + username: "Tom", + stock: "PQR", + buyAmount: 5000.00, + triggerAmount: 789.01, + }, + { + username: "Emily", + stock: "STU", + buyAmount: 234.56, + triggerAmount: null, + }, + { + username: "Mike", + stock: "VWX", + buyAmount: 5000.00, + triggerAmount: 890.12, + }, + { + username: "Jessica", + stock: "YZA", + buyAmount: 567.89, + triggerAmount: null, + }, + { + username: "William", + stock: "BCD", + buyAmount: 5000.00, + triggerAmount: 432.1, + }, + { + username: "Linda", + stock: "EFG", + buyAmount: 765.43, + triggerAmount: null, + }, + { + username: "Chris", + stock: "HIJ", + buyAmount: 5000.00, + triggerAmount: 901.23, + }, + { + username: "Megan", + stock: "KLM", + buyAmount: 234.56, + triggerAmount: null, + }, + { + username: "Jason", + stock: "NOP", + buyAmount: 5000.00, + triggerAmount: 789.01, + }, +]; diff --git a/transaction/prisma/dummy_data/SellTriggers.ts b/transaction/prisma/dummy_data/SellTriggers.ts new file mode 100644 index 0000000..394f9fc --- /dev/null +++ b/transaction/prisma/dummy_data/SellTriggers.ts @@ -0,0 +1,92 @@ +export const SellTriggers = [ + { + username: "John", + stock: "ABC", + sharesToSell: 3.0, + triggerAmount: 542.25, + }, + { + username: "Jane", + stock: "XYZ", + sharesToSell: 3.0, + triggerAmount: 123.45, + }, + { + username: "Bob", + stock: "DEF", + sharesToSell: 3.0, + triggerAmount: 987.65, + }, + { + username: "Alice", + stock: "GHI", + sharesToSell: 3.0, + triggerAmount: 654.32, + }, + { + username: "David", + stock: "JKL", + sharesToSell: 3.0, + triggerAmount: 321.09, + }, + { + username: "Samantha", + stock: "MNO", + sharesToSell: 3.0, + triggerAmount: 456.78, + }, + { + username: "Tom", + stock: "PQR", + sharesToSell: 3.0, + triggerAmount: 789.01, + }, + { + username: "Emily", + stock: "STU", + sharesToSell: 3.0, + triggerAmount: 234.56, + }, + { + username: "Mike", + stock: "VWX", + sharesToSell: 3.0, + triggerAmount: 890.12, + }, + { + username: "Jessica", + stock: "YZA", + sharesToSell: 3.0, + triggerAmount: 567.89, + }, + { + username: "William", + stock: "BCD", + sharesToSell: 3.0, + triggerAmount: 432.1, + }, + { + username: "Linda", + stock: "EFG", + sharesToSell: 3.0, + triggerAmount: 765.43, + }, + { + username: "Chris", + stock: "HIJ", + sharesToSell: 3.0, + triggerAmount: 901.23, + }, + { + username: "Megan", + stock: "KLM", + sharesToSell: 3.0, + triggerAmount: 234.56, + }, + { + username: "Jason", + stock: "NOP", + sharesToSell: 3.0, + triggerAmount: 789.01, + }, +]; \ No newline at end of file diff --git a/transaction/prisma/schema.prisma b/transaction/prisma/schema.prisma index 3df997b..8123e1f 100644 --- a/transaction/prisma/schema.prisma +++ b/transaction/prisma/schema.prisma @@ -7,14 +7,18 @@ generator client { datasource db { provider = "postgresql" - url = "postgresql://admin:postgrespw@postgres:5432/devdb?schema=public" + url = "postgresql://admin:postgrespw@transactionDB:5432/devdb?schema=public" } model User { - username String @id - balance Float @default(0.0) - BuySellTrigger BuySellTrigger[] + username String @id + role String @default("user") + balance Float @default(0.0) + BuyTrigger BuyTrigger[] + SellTrigger SellTrigger[] OwnedStock OwnedStock[] + UncommitedBuy UncommitedBuy[] + UncommitedSell UncommitedSell[] } model OwnedStock { @@ -22,19 +26,47 @@ model OwnedStock { user User @relation(fields: [username], references: [username]) username String stock String - shares Int + shares Float + + @@unique([username, stock]) } -model BuySellTrigger { - id Int @id @default(autoincrement()) - user User @relation(fields: [username], references: [username]) - username String - stock String - type TriggerType - amount Float +model UncommitedBuy { + user User @relation(fields: [username], references: [username]) + username String @id + stock String + amount Float + shares Float + expiresAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP + interval '61' second")) +} + +model UncommitedSell { + user User @relation(fields: [username], references: [username]) + username String @id + stock String + amount Float + shares Float + expiresAt DateTime @default(dbgenerated("CURRENT_TIMESTAMP + interval '61' second")) } -enum TriggerType { - SELL - BUY +model BuyTrigger { + id Int @id @default(autoincrement()) + user User @relation(fields: [username], references: [username]) + username String + stock String + triggerAmount Float? + buyAmount Float + + @@unique([username, stock]) +} + +model SellTrigger { + id Int @id @default(autoincrement()) + user User @relation(fields: [username], references: [username]) + username String + stock String + triggerAmount Float? + sharesToSell Float + + @@unique([username, stock]) } diff --git a/transaction/prisma/seed.ts b/transaction/prisma/seed.ts index d98447f..73a25ce 100644 --- a/transaction/prisma/seed.ts +++ b/transaction/prisma/seed.ts @@ -1,7 +1,8 @@ import { PrismaClient } from '@prisma/client' import { Users } from './dummy_data/Users'; import { OwnedStocks } from './dummy_data/OwnedStocks'; -import { BuySellTriggers } from './dummy_data/BuySellTriggers'; +import { BuyTriggers } from './dummy_data/BuyTriggers'; +import { SellTriggers } from './dummy_data/SellTriggers'; const prisma = new PrismaClient(); @@ -29,10 +30,17 @@ async function main(){ data: stock }); } - console.log("Seeding BuySellTriggers"); - for(const trigger of BuySellTriggers){ - console.log("Seeding trigger", BuySellTriggers.indexOf(trigger)); - await prisma.buySellTrigger.create({ + console.log("Seeding BuyTriggers"); + for(const trigger of BuyTriggers){ + console.log("Seeding trigger", BuyTriggers.indexOf(trigger)); + await prisma.buyTrigger.create({ + data: trigger + }); + } + console.log("Seeding SellTriggers"); + for(const trigger of SellTriggers){ + console.log("Seeding trigger", SellTriggers.indexOf(trigger)); + await prisma.sellTrigger.create({ data: trigger }); } diff --git a/transaction/src/index.ts b/transaction/src/index.ts index 1aace14..c56d3a6 100644 --- a/transaction/src/index.ts +++ b/transaction/src/index.ts @@ -1,10 +1,27 @@ +import { loadPackageDefinition, Server} from "@grpc/grpc-js"; +import {loadSync} from "@grpc/proto-loader"; +import {ProtoGrpcType} from "./proto/day-trader"; import * as grpc from '@grpc/grpc-js'; +import { TransactionImplementations } from "./services/Transaction"; +import { TriggerImplementation } from "./services/Trigger"; +import { CheckTriggers } from "./utils/CheckTriggers"; + + +const def = loadSync(__dirname + "/proto/day-trader-copy.proto") +const definitions = loadPackageDefinition(def) as unknown as ProtoGrpcType + +const server = new Server(); + +server.addService(definitions.day_trader.Transaction.service, TransactionImplementations) +server.addService(definitions.day_trader.Trigger.service, TriggerImplementation) + -const server = new grpc.Server(); const port = process.env.PORT || 50051; -const credentials = grpc.ServerCredentials.createInsecure(); -server.bindAsync(`0.0.0.0:${port}`, credentials, () => { +server.bindAsync(`0.0.0.0:${port}`, grpc.ServerCredentials.createInsecure(), () => { server.start(); console.log(`gRPC server started on port ${port}`); + setInterval(() => { + CheckTriggers(); + }, 300000); // every 5 minutes check triggers }); \ No newline at end of file diff --git a/transaction/src/proto/day-trader-copy.proto b/transaction/src/proto/day-trader-copy.proto new file mode 100644 index 0000000..959ec80 --- /dev/null +++ b/transaction/src/proto/day-trader-copy.proto @@ -0,0 +1,355 @@ +syntax = "proto3"; +package day_trader; + +service Quote { + // Get the current quote for the stock for the specified user + rpc Quote(QuoteRequest) returns (QuoteResponse); +} + +service Log { + // Print out the history of the users transactions to the user specified file + rpc DumpLogUser(DumpLogUserRequest) returns (DumpLogUserResponse); + // Print out to the specified file the complete set of transactions that have occurred in the system. + rpc DumpLog(DumpLogRequest) returns (DumpLogResponse); + // Provides a summary to the client of the given user's transaction history and the current status of their accounts as well as any set buy or sell triggers and their parameters + rpc DisplaySummary(DisplaySummaryRequest) returns (DisplaySummaryResponse); + // insert UserCommand into log db + rpc InsertUserCommand(InsertUserCommandRequest) returns (InsertUserCommandResponse); + // insert AccountTransaction into log db + rpc InsertAccountTransaction(InsertAccountTransactionRequest) returns (InsertAccountTransactionResponse); + // insert SystemEvent into log db + rpc InsertSystemEvent(InsertSystemEventRequest) returns (InsertSystemEventResponse); + // insert QuoteServer into log db + rpc InsertQuoteServer(InsertQuoteServerRequest) returns (InsertQuoteServerResponse); + // insert ErrorEvent into log db + rpc InsertErrorEvent(InsertErrorEventRequest) returns (InsertErrorEventResponse); +} + +service Transaction { + // Add the given amount of money to the user's account + rpc Add(AddRequest) returns (AddResponse); + // Buy the dollar amount of the stock for the specified user at the current price. + rpc Buy(BuyRequest) returns (BuyResponse); + // Commits the most recently executed BUY command + rpc CommitBuy(CommitBuyRequest) returns (CommitBuyResponse); + // Cancels the most recently executed BUY Command + rpc CancelBuy(CancelBuyRequest) returns (CancelBuyResponse); + // Sell the specified dollar mount of the stock currently held by the specified user at the current price. + rpc Sell(SellRequest) returns (SellResponse); + // Commits the most recently executed SELL command + rpc CommitSell(CommitSellRequest) returns (CommitSellResponse); + // Cancels the most recently executed SELL Command + rpc CancelSell(CancelSellRequest) returns (CancelSellResponse); + // Gets the users balance and stocks owned + rpc GetUser(GetUserRequest) returns (GetUserResponse); + // Creates a user + rpc CreateUser(CreateUserRequest) returns (CreateUserResponse); +} + +service Trigger { + // Sets a defined amount of the given stock to buy when the current stock price is less than or equal to the BUY_TRIGGER + rpc SetBuyAmount(SetBuyAmountRequest) returns (SetBuyAmountResponse); + // Cancels a SET_BUY command issued for the given stock + rpc CancelSetBuy(CancelSetBuyRequest) returns (CancelSetBuyResponse); + // Sets the trigger point base on the current stock price when any SET_BUY will execute. + rpc SetBuyTrigger(SetBuyTriggerRequest) returns (SetBuyTriggerResponse); + // Sets a defined amount of the specified stock to sell when the current stock price is equal or greater than the sell trigger point + rpc SetSellAmount(SetSellAmountRequest) returns (SetSellAmountResponse); + // Sets the stock price trigger point for executing any SET_SELL triggers associated with the given stock and user + rpc SetSellTrigger(SetSellTriggerRequest) returns (SetSellTriggerResponse); + // Cancels the SET_SELL associated with the given stock and user + rpc CancelSetSell(CancelSetSellRequest) returns (CancelSetSellResponse); +} + +message AddRequest { + string user_id = 1; + float amount = 2; +} + +message AddResponse { + float balance = 1; +} + +message QuoteRequest { + string user_id = 1; + string stock_symbol = 2; +} + +message QuoteResponse { + float quote = 1; + string sym = 2; + string user_id = 3; + uint64 timestamp = 4; + string crypto_key = 5; +} + +message BuyRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} + +message BuyResponse { + float shares = 1; + bool success = 2; +} + +message CommitBuyRequest{ + string user_id = 1; +} + +message CommitBuyResponse { + float stocksOwned = 1; + float balance = 2; + bool success = 3; +} + +message CancelBuyRequest {string user_id = 1;} +message CancelBuyResponse { + bool success = 1; +} + +message SellRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SellResponse { + float amount = 1; + float shares = 2; + bool success = 3; +} + +message CommitSellRequest { + string user_id = 1; +} +message CommitSellResponse { + float stocksOwned = 1; + float balance = 2; + bool success = 3; +} +message CancelSellRequest { + string user_id = 1; +} +message CancelSellResponse { + bool success = 1; +} +message GetUserRequest { + string user_id = 1; +} +message GetUserResponse { + string username = 1; + float balance = 2; + string role = 3; + bool success = 4; + repeated OwnedStock owned_stock = 5; + repeated BuyTrigger buy_triggers = 6; + repeated SellTrigger sell_triggers = 7; +} + +message OwnedStock { + int32 id = 1; + string username = 2; + string stock = 3; + float shares = 4; +} + +message BuyTrigger { + int32 id = 1; + string username = 2; + string stock = 3; + float trigger_amount = 4; + float buy_amount = 5; +} + +message SellTrigger { + int32 id = 1; + string username = 2; + string stock = 3; + float trigger_amount = 4; + float shares_to_sell = 5; +} + +message CreateUserRequest { + string user_id = 1; +} +message CreateUserResponse { + string username = 1; + bool success = 2; +} +message SetBuyAmountRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SetBuyAmountResponse { + float balance = 1; + float buy_amount = 2; + bool success = 3; +} +message CancelSetBuyRequest { + string user_id = 1; + string stock_symbol = 2; +} +message CancelSetBuyResponse { + bool success = 1; +} +message SetBuyTriggerRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SetBuyTriggerResponse { + float trigger_amount = 1; + string stock = 2; + bool success = 3; +} +message SetSellAmountRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SetSellAmountResponse { + float currentStockPrice = 1; + float numSharesToSell = 2; + bool success = 3; +} +message SetSellTriggerRequest { + string user_id = 1; + string stock_symbol = 2; + float amount = 3; +} +message SetSellTriggerResponse { + +} +message CancelSetSellRequest { + string user_id = 1; + string stock_symbol = 2; +} +message CancelSetSellResponse {} +message DumpLogUserRequest { + string user_id = 1; + string filename = 2; +} +message DumpLogUserResponse { + string xml = 1; +} +message DumpLogRequest { + string filename = 1; +} +message DumpLogResponse { + string xml = 1; +} +message DisplaySummaryRequest { + string user_id = 1; +} +message DisplaySummaryResponse { + repeated UserCommand user_commands = 1; + repeated AccountTransaction account_transactions = 2; +} + +message UserCommand { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message AccountTransaction { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string action = 4; + string username = 5; + float funds = 6; +} + +message InsertUserCommandRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; +} +message InsertUserCommandResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message InsertAccountTransactionRequest { + string server = 1; + string action = 2; + string username = 3; + float funds = 4; +} +message InsertAccountTransactionResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string action = 4; + string username = 5; + float funds = 6; +} + +message InsertSystemEventRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; +} +message InsertSystemEventResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; +} + +message InsertQuoteServerRequest { + string server = 1; + int64 quoteServerTime = 2; + string username = 3; + string stockSymbol = 4; + float price = 5; + string cryptokey = 6; +} +message InsertQuoteServerResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + int64 quote_server_time = 4; + string username = 5; + string stock_symbol = 6; + float price = 7; + string crypto_key = 8; +} + +message InsertErrorEventRequest { + string server = 1; + string command = 2; + string username = 3; + string stockSymbol = 4; + float funds = 5; + string errorMessage = 6; +} +message InsertErrorEventResponse { + int32 transaction_num = 1; + int64 timestamp = 2; + string server = 3; + string command = 4; + string username = 5; + string stock_symbol = 6; + float funds = 7; + string error_message = 8; +} \ No newline at end of file diff --git a/transaction/src/proto/day-trader.ts b/transaction/src/proto/day-trader.ts new file mode 100644 index 0000000..13b4da4 --- /dev/null +++ b/transaction/src/proto/day-trader.ts @@ -0,0 +1,74 @@ +import type * as grpc from '@grpc/grpc-js'; +import type { MessageTypeDefinition } from '@grpc/proto-loader'; + +import type { LogClient as _day_trader_LogClient, LogDefinition as _day_trader_LogDefinition } from './day_trader/Log'; +import type { QuoteClient as _day_trader_QuoteClient, QuoteDefinition as _day_trader_QuoteDefinition } from './day_trader/Quote'; +import type { TransactionClient as _day_trader_TransactionClient, TransactionDefinition as _day_trader_TransactionDefinition } from './day_trader/Transaction'; +import type { TriggerClient as _day_trader_TriggerClient, TriggerDefinition as _day_trader_TriggerDefinition } from './day_trader/Trigger'; + +type SubtypeConstructor any, Subtype> = { + new(...args: ConstructorParameters): Subtype; +}; + +export interface ProtoGrpcType { + day_trader: { + AccountTransaction: MessageTypeDefinition + AddRequest: MessageTypeDefinition + AddResponse: MessageTypeDefinition + BuyRequest: MessageTypeDefinition + BuyResponse: MessageTypeDefinition + BuyTrigger: MessageTypeDefinition + CancelBuyRequest: MessageTypeDefinition + CancelBuyResponse: MessageTypeDefinition + CancelSellRequest: MessageTypeDefinition + CancelSellResponse: MessageTypeDefinition + CancelSetBuyRequest: MessageTypeDefinition + CancelSetBuyResponse: MessageTypeDefinition + CancelSetSellRequest: MessageTypeDefinition + CancelSetSellResponse: MessageTypeDefinition + CommitBuyRequest: MessageTypeDefinition + CommitBuyResponse: MessageTypeDefinition + CommitSellRequest: MessageTypeDefinition + CommitSellResponse: MessageTypeDefinition + CreateUserRequest: MessageTypeDefinition + CreateUserResponse: MessageTypeDefinition + DisplaySummaryRequest: MessageTypeDefinition + DisplaySummaryResponse: MessageTypeDefinition + DumpLogRequest: MessageTypeDefinition + DumpLogResponse: MessageTypeDefinition + DumpLogUserRequest: MessageTypeDefinition + DumpLogUserResponse: MessageTypeDefinition + GetUserRequest: MessageTypeDefinition + GetUserResponse: MessageTypeDefinition + InsertAccountTransactionRequest: MessageTypeDefinition + InsertAccountTransactionResponse: MessageTypeDefinition + InsertErrorEventRequest: MessageTypeDefinition + InsertErrorEventResponse: MessageTypeDefinition + InsertQuoteServerRequest: MessageTypeDefinition + InsertQuoteServerResponse: MessageTypeDefinition + InsertSystemEventRequest: MessageTypeDefinition + InsertSystemEventResponse: MessageTypeDefinition + InsertUserCommandRequest: MessageTypeDefinition + InsertUserCommandResponse: MessageTypeDefinition + Log: SubtypeConstructor & { service: _day_trader_LogDefinition } + OwnedStock: MessageTypeDefinition + Quote: SubtypeConstructor & { service: _day_trader_QuoteDefinition } + QuoteRequest: MessageTypeDefinition + QuoteResponse: MessageTypeDefinition + SellRequest: MessageTypeDefinition + SellResponse: MessageTypeDefinition + SellTrigger: MessageTypeDefinition + SetBuyAmountRequest: MessageTypeDefinition + SetBuyAmountResponse: MessageTypeDefinition + SetBuyTriggerRequest: MessageTypeDefinition + SetBuyTriggerResponse: MessageTypeDefinition + SetSellAmountRequest: MessageTypeDefinition + SetSellAmountResponse: MessageTypeDefinition + SetSellTriggerRequest: MessageTypeDefinition + SetSellTriggerResponse: MessageTypeDefinition + Transaction: SubtypeConstructor & { service: _day_trader_TransactionDefinition } + Trigger: SubtypeConstructor & { service: _day_trader_TriggerDefinition } + UserCommand: MessageTypeDefinition + } +} + diff --git a/transaction/src/proto/day_trader/AccountTransaction.ts b/transaction/src/proto/day_trader/AccountTransaction.ts new file mode 100644 index 0000000..18bbeca --- /dev/null +++ b/transaction/src/proto/day_trader/AccountTransaction.ts @@ -0,0 +1,21 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface AccountTransaction { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number | string); +} + +export interface AccountTransaction__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number); +} diff --git a/transaction/src/proto/day_trader/AddRequest.ts b/transaction/src/proto/day_trader/AddRequest.ts new file mode 100644 index 0000000..93d4042 --- /dev/null +++ b/transaction/src/proto/day_trader/AddRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface AddRequest { + 'userId'?: (string); + 'amount'?: (number | string); +} + +export interface AddRequest__Output { + 'userId'?: (string); + 'amount'?: (number); +} diff --git a/transaction/src/proto/day_trader/AddResponse.ts b/transaction/src/proto/day_trader/AddResponse.ts new file mode 100644 index 0000000..5e8a214 --- /dev/null +++ b/transaction/src/proto/day_trader/AddResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface AddResponse { + 'balance'?: (number | string); +} + +export interface AddResponse__Output { + 'balance'?: (number); +} diff --git a/transaction/src/proto/day_trader/BuyRequest.ts b/transaction/src/proto/day_trader/BuyRequest.ts new file mode 100644 index 0000000..96ac3a5 --- /dev/null +++ b/transaction/src/proto/day_trader/BuyRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface BuyRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface BuyRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/transaction/src/proto/day_trader/BuyResponse.ts b/transaction/src/proto/day_trader/BuyResponse.ts new file mode 100644 index 0000000..ae0ecf7 --- /dev/null +++ b/transaction/src/proto/day_trader/BuyResponse.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface BuyResponse { + 'shares'?: (number | string); + 'success'?: (boolean); +} + +export interface BuyResponse__Output { + 'shares'?: (number); + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/BuyTrigger.ts b/transaction/src/proto/day_trader/BuyTrigger.ts new file mode 100644 index 0000000..b8a069a --- /dev/null +++ b/transaction/src/proto/day_trader/BuyTrigger.ts @@ -0,0 +1,18 @@ +// Original file: ../protos/day-trader.proto + + +export interface BuyTrigger { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'triggerAmount'?: (number | string); + 'buyAmount'?: (number | string); +} + +export interface BuyTrigger__Output { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'triggerAmount'?: (number); + 'buyAmount'?: (number); +} diff --git a/transaction/src/proto/day_trader/CancelBuyRequest.ts b/transaction/src/proto/day_trader/CancelBuyRequest.ts new file mode 100644 index 0000000..bbd6348 --- /dev/null +++ b/transaction/src/proto/day_trader/CancelBuyRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelBuyRequest { + 'userId'?: (string); +} + +export interface CancelBuyRequest__Output { + 'userId'?: (string); +} diff --git a/transaction/src/proto/day_trader/CancelBuyResponse.ts b/transaction/src/proto/day_trader/CancelBuyResponse.ts new file mode 100644 index 0000000..feace93 --- /dev/null +++ b/transaction/src/proto/day_trader/CancelBuyResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelBuyResponse { + 'success'?: (boolean); +} + +export interface CancelBuyResponse__Output { + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/CancelSellRequest.ts b/transaction/src/proto/day_trader/CancelSellRequest.ts new file mode 100644 index 0000000..46fcb7f --- /dev/null +++ b/transaction/src/proto/day_trader/CancelSellRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSellRequest { + 'userId'?: (string); +} + +export interface CancelSellRequest__Output { + 'userId'?: (string); +} diff --git a/transaction/src/proto/day_trader/CancelSellResponse.ts b/transaction/src/proto/day_trader/CancelSellResponse.ts new file mode 100644 index 0000000..0234d76 --- /dev/null +++ b/transaction/src/proto/day_trader/CancelSellResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSellResponse { + 'success'?: (boolean); +} + +export interface CancelSellResponse__Output { + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/CancelSetBuyRequest.ts b/transaction/src/proto/day_trader/CancelSetBuyRequest.ts new file mode 100644 index 0000000..b5985ac --- /dev/null +++ b/transaction/src/proto/day_trader/CancelSetBuyRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetBuyRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface CancelSetBuyRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); +} diff --git a/transaction/src/proto/day_trader/CancelSetBuyResponse.ts b/transaction/src/proto/day_trader/CancelSetBuyResponse.ts new file mode 100644 index 0000000..235ba42 --- /dev/null +++ b/transaction/src/proto/day_trader/CancelSetBuyResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetBuyResponse { + 'success'?: (boolean); +} + +export interface CancelSetBuyResponse__Output { + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/CancelSetSellRequest.ts b/transaction/src/proto/day_trader/CancelSetSellRequest.ts new file mode 100644 index 0000000..8aa5272 --- /dev/null +++ b/transaction/src/proto/day_trader/CancelSetSellRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetSellRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface CancelSetSellRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); +} diff --git a/transaction/src/proto/day_trader/CancelSetSellResponse.ts b/transaction/src/proto/day_trader/CancelSetSellResponse.ts new file mode 100644 index 0000000..a2b34e9 --- /dev/null +++ b/transaction/src/proto/day_trader/CancelSetSellResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface CancelSetSellResponse { +} + +export interface CancelSetSellResponse__Output { +} diff --git a/transaction/src/proto/day_trader/CommitBuyRequest.ts b/transaction/src/proto/day_trader/CommitBuyRequest.ts new file mode 100644 index 0000000..7de6821 --- /dev/null +++ b/transaction/src/proto/day_trader/CommitBuyRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitBuyRequest { + 'userId'?: (string); +} + +export interface CommitBuyRequest__Output { + 'userId'?: (string); +} diff --git a/transaction/src/proto/day_trader/CommitBuyResponse.ts b/transaction/src/proto/day_trader/CommitBuyResponse.ts new file mode 100644 index 0000000..3f79ed5 --- /dev/null +++ b/transaction/src/proto/day_trader/CommitBuyResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitBuyResponse { + 'stocksOwned'?: (number | string); + 'balance'?: (number | string); + 'success'?: (boolean); +} + +export interface CommitBuyResponse__Output { + 'stocksOwned'?: (number); + 'balance'?: (number); + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/CommitSellRequest.ts b/transaction/src/proto/day_trader/CommitSellRequest.ts new file mode 100644 index 0000000..7e19941 --- /dev/null +++ b/transaction/src/proto/day_trader/CommitSellRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitSellRequest { + 'userId'?: (string); +} + +export interface CommitSellRequest__Output { + 'userId'?: (string); +} diff --git a/transaction/src/proto/day_trader/CommitSellResponse.ts b/transaction/src/proto/day_trader/CommitSellResponse.ts new file mode 100644 index 0000000..c3da957 --- /dev/null +++ b/transaction/src/proto/day_trader/CommitSellResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface CommitSellResponse { + 'stocksOwned'?: (number | string); + 'balance'?: (number | string); + 'success'?: (boolean); +} + +export interface CommitSellResponse__Output { + 'stocksOwned'?: (number); + 'balance'?: (number); + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/CreateUserRequest.ts b/transaction/src/proto/day_trader/CreateUserRequest.ts new file mode 100644 index 0000000..2a147a2 --- /dev/null +++ b/transaction/src/proto/day_trader/CreateUserRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface CreateUserRequest { + 'userId'?: (string); +} + +export interface CreateUserRequest__Output { + 'userId'?: (string); +} diff --git a/transaction/src/proto/day_trader/CreateUserResponse.ts b/transaction/src/proto/day_trader/CreateUserResponse.ts new file mode 100644 index 0000000..fbc6371 --- /dev/null +++ b/transaction/src/proto/day_trader/CreateUserResponse.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface CreateUserResponse { + 'username'?: (string); + 'success'?: (boolean); +} + +export interface CreateUserResponse__Output { + 'username'?: (string); + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/DisplaySummaryRequest.ts b/transaction/src/proto/day_trader/DisplaySummaryRequest.ts new file mode 100644 index 0000000..f83b983 --- /dev/null +++ b/transaction/src/proto/day_trader/DisplaySummaryRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DisplaySummaryRequest { + 'userId'?: (string); +} + +export interface DisplaySummaryRequest__Output { + 'userId'?: (string); +} diff --git a/transaction/src/proto/day_trader/DisplaySummaryResponse.ts b/transaction/src/proto/day_trader/DisplaySummaryResponse.ts new file mode 100644 index 0000000..9ef9256 --- /dev/null +++ b/transaction/src/proto/day_trader/DisplaySummaryResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + +import type { UserCommand as _day_trader_UserCommand, UserCommand__Output as _day_trader_UserCommand__Output } from '../day_trader/UserCommand'; +import type { AccountTransaction as _day_trader_AccountTransaction, AccountTransaction__Output as _day_trader_AccountTransaction__Output } from '../day_trader/AccountTransaction'; + +export interface DisplaySummaryResponse { + 'userCommands'?: (_day_trader_UserCommand)[]; + 'accountTransactions'?: (_day_trader_AccountTransaction)[]; +} + +export interface DisplaySummaryResponse__Output { + 'userCommands'?: (_day_trader_UserCommand__Output)[]; + 'accountTransactions'?: (_day_trader_AccountTransaction__Output)[]; +} diff --git a/transaction/src/proto/day_trader/DumpLogRequest.ts b/transaction/src/proto/day_trader/DumpLogRequest.ts new file mode 100644 index 0000000..3faae1e --- /dev/null +++ b/transaction/src/proto/day_trader/DumpLogRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogRequest { + 'filename'?: (string); +} + +export interface DumpLogRequest__Output { + 'filename'?: (string); +} diff --git a/transaction/src/proto/day_trader/DumpLogResponse.ts b/transaction/src/proto/day_trader/DumpLogResponse.ts new file mode 100644 index 0000000..ccea642 --- /dev/null +++ b/transaction/src/proto/day_trader/DumpLogResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogResponse { + 'xml'?: (string); +} + +export interface DumpLogResponse__Output { + 'xml'?: (string); +} diff --git a/transaction/src/proto/day_trader/DumpLogUserRequest.ts b/transaction/src/proto/day_trader/DumpLogUserRequest.ts new file mode 100644 index 0000000..0291327 --- /dev/null +++ b/transaction/src/proto/day_trader/DumpLogUserRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogUserRequest { + 'userId'?: (string); + 'filename'?: (string); +} + +export interface DumpLogUserRequest__Output { + 'userId'?: (string); + 'filename'?: (string); +} diff --git a/transaction/src/proto/day_trader/DumpLogUserResponse.ts b/transaction/src/proto/day_trader/DumpLogUserResponse.ts new file mode 100644 index 0000000..7da0958 --- /dev/null +++ b/transaction/src/proto/day_trader/DumpLogUserResponse.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface DumpLogUserResponse { + 'xml'?: (string); +} + +export interface DumpLogUserResponse__Output { + 'xml'?: (string); +} diff --git a/transaction/src/proto/day_trader/GetUserRequest.ts b/transaction/src/proto/day_trader/GetUserRequest.ts new file mode 100644 index 0000000..23bd6d3 --- /dev/null +++ b/transaction/src/proto/day_trader/GetUserRequest.ts @@ -0,0 +1,10 @@ +// Original file: ../protos/day-trader.proto + + +export interface GetUserRequest { + 'userId'?: (string); +} + +export interface GetUserRequest__Output { + 'userId'?: (string); +} diff --git a/transaction/src/proto/day_trader/GetUserResponse.ts b/transaction/src/proto/day_trader/GetUserResponse.ts new file mode 100644 index 0000000..b6303de --- /dev/null +++ b/transaction/src/proto/day_trader/GetUserResponse.ts @@ -0,0 +1,25 @@ +// Original file: ../protos/day-trader.proto + +import type { OwnedStock as _day_trader_OwnedStock, OwnedStock__Output as _day_trader_OwnedStock__Output } from '../day_trader/OwnedStock'; +import type { BuyTrigger as _day_trader_BuyTrigger, BuyTrigger__Output as _day_trader_BuyTrigger__Output } from '../day_trader/BuyTrigger'; +import type { SellTrigger as _day_trader_SellTrigger, SellTrigger__Output as _day_trader_SellTrigger__Output } from '../day_trader/SellTrigger'; + +export interface GetUserResponse { + 'username'?: (string); + 'balance'?: (number | string); + 'role'?: (string); + 'success'?: (boolean); + 'ownedStock'?: (_day_trader_OwnedStock)[]; + 'buyTriggers'?: (_day_trader_BuyTrigger)[]; + 'sellTriggers'?: (_day_trader_SellTrigger)[]; +} + +export interface GetUserResponse__Output { + 'username'?: (string); + 'balance'?: (number); + 'role'?: (string); + 'success'?: (boolean); + 'ownedStock'?: (_day_trader_OwnedStock__Output)[]; + 'buyTriggers'?: (_day_trader_BuyTrigger__Output)[]; + 'sellTriggers'?: (_day_trader_SellTrigger__Output)[]; +} diff --git a/transaction/src/proto/day_trader/InsertAccountTransactionRequest.ts b/transaction/src/proto/day_trader/InsertAccountTransactionRequest.ts new file mode 100644 index 0000000..fb4a9d1 --- /dev/null +++ b/transaction/src/proto/day_trader/InsertAccountTransactionRequest.ts @@ -0,0 +1,16 @@ +// Original file: ../protos/day-trader.proto + + +export interface InsertAccountTransactionRequest { + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number | string); +} + +export interface InsertAccountTransactionRequest__Output { + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number); +} diff --git a/transaction/src/proto/day_trader/InsertAccountTransactionResponse.ts b/transaction/src/proto/day_trader/InsertAccountTransactionResponse.ts new file mode 100644 index 0000000..c274fab --- /dev/null +++ b/transaction/src/proto/day_trader/InsertAccountTransactionResponse.ts @@ -0,0 +1,21 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertAccountTransactionResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number | string); +} + +export interface InsertAccountTransactionResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'action'?: (string); + 'username'?: (string); + 'funds'?: (number); +} diff --git a/transaction/src/proto/day_trader/InsertErrorEventRequest.ts b/transaction/src/proto/day_trader/InsertErrorEventRequest.ts new file mode 100644 index 0000000..bbd90ff --- /dev/null +++ b/transaction/src/proto/day_trader/InsertErrorEventRequest.ts @@ -0,0 +1,20 @@ +// Original file: ../protos/day-trader.proto + + +export interface InsertErrorEventRequest { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); + 'errorMessage'?: (string); +} + +export interface InsertErrorEventRequest__Output { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); + 'errorMessage'?: (string); +} diff --git a/transaction/src/proto/day_trader/InsertErrorEventResponse.ts b/transaction/src/proto/day_trader/InsertErrorEventResponse.ts new file mode 100644 index 0000000..a596ebe --- /dev/null +++ b/transaction/src/proto/day_trader/InsertErrorEventResponse.ts @@ -0,0 +1,25 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertErrorEventResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); + 'errorMessage'?: (string); +} + +export interface InsertErrorEventResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); + 'errorMessage'?: (string); +} diff --git a/transaction/src/proto/day_trader/InsertQuoteServerRequest.ts b/transaction/src/proto/day_trader/InsertQuoteServerRequest.ts new file mode 100644 index 0000000..d14d9a6 --- /dev/null +++ b/transaction/src/proto/day_trader/InsertQuoteServerRequest.ts @@ -0,0 +1,21 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertQuoteServerRequest { + 'server'?: (string); + 'quoteServerTime'?: (number | string | Long); + 'username'?: (string); + 'stockSymbol'?: (string); + 'price'?: (number | string); + 'cryptokey'?: (string); +} + +export interface InsertQuoteServerRequest__Output { + 'server'?: (string); + 'quoteServerTime'?: (Long); + 'username'?: (string); + 'stockSymbol'?: (string); + 'price'?: (number); + 'cryptokey'?: (string); +} diff --git a/transaction/src/proto/day_trader/InsertQuoteServerResponse.ts b/transaction/src/proto/day_trader/InsertQuoteServerResponse.ts new file mode 100644 index 0000000..30b69c7 --- /dev/null +++ b/transaction/src/proto/day_trader/InsertQuoteServerResponse.ts @@ -0,0 +1,25 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertQuoteServerResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'quoteServerTime'?: (number | string | Long); + 'username'?: (string); + 'stockSymbol'?: (string); + 'price'?: (number | string); + 'cryptoKey'?: (string); +} + +export interface InsertQuoteServerResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'quoteServerTime'?: (Long); + 'username'?: (string); + 'stockSymbol'?: (string); + 'price'?: (number); + 'cryptoKey'?: (string); +} diff --git a/transaction/src/proto/day_trader/InsertSystemEventRequest.ts b/transaction/src/proto/day_trader/InsertSystemEventRequest.ts new file mode 100644 index 0000000..00e3b9f --- /dev/null +++ b/transaction/src/proto/day_trader/InsertSystemEventRequest.ts @@ -0,0 +1,18 @@ +// Original file: ../protos/day-trader.proto + + +export interface InsertSystemEventRequest { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface InsertSystemEventRequest__Output { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/transaction/src/proto/day_trader/InsertSystemEventResponse.ts b/transaction/src/proto/day_trader/InsertSystemEventResponse.ts new file mode 100644 index 0000000..a916ffd --- /dev/null +++ b/transaction/src/proto/day_trader/InsertSystemEventResponse.ts @@ -0,0 +1,23 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertSystemEventResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface InsertSystemEventResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/transaction/src/proto/day_trader/InsertUserCommandRequest.ts b/transaction/src/proto/day_trader/InsertUserCommandRequest.ts new file mode 100644 index 0000000..b83d7e7 --- /dev/null +++ b/transaction/src/proto/day_trader/InsertUserCommandRequest.ts @@ -0,0 +1,18 @@ +// Original file: ../protos/day-trader.proto + + +export interface InsertUserCommandRequest { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface InsertUserCommandRequest__Output { + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/transaction/src/proto/day_trader/InsertUserCommandResponse.ts b/transaction/src/proto/day_trader/InsertUserCommandResponse.ts new file mode 100644 index 0000000..a44f32c --- /dev/null +++ b/transaction/src/proto/day_trader/InsertUserCommandResponse.ts @@ -0,0 +1,23 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface InsertUserCommandResponse { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface InsertUserCommandResponse__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/transaction/src/proto/day_trader/Log.ts b/transaction/src/proto/day_trader/Log.ts new file mode 100644 index 0000000..b866487 --- /dev/null +++ b/transaction/src/proto/day_trader/Log.ts @@ -0,0 +1,125 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { DisplaySummaryRequest as _day_trader_DisplaySummaryRequest, DisplaySummaryRequest__Output as _day_trader_DisplaySummaryRequest__Output } from '../day_trader/DisplaySummaryRequest'; +import type { DisplaySummaryResponse as _day_trader_DisplaySummaryResponse, DisplaySummaryResponse__Output as _day_trader_DisplaySummaryResponse__Output } from '../day_trader/DisplaySummaryResponse'; +import type { DumpLogRequest as _day_trader_DumpLogRequest, DumpLogRequest__Output as _day_trader_DumpLogRequest__Output } from '../day_trader/DumpLogRequest'; +import type { DumpLogResponse as _day_trader_DumpLogResponse, DumpLogResponse__Output as _day_trader_DumpLogResponse__Output } from '../day_trader/DumpLogResponse'; +import type { DumpLogUserRequest as _day_trader_DumpLogUserRequest, DumpLogUserRequest__Output as _day_trader_DumpLogUserRequest__Output } from '../day_trader/DumpLogUserRequest'; +import type { DumpLogUserResponse as _day_trader_DumpLogUserResponse, DumpLogUserResponse__Output as _day_trader_DumpLogUserResponse__Output } from '../day_trader/DumpLogUserResponse'; +import type { InsertAccountTransactionRequest as _day_trader_InsertAccountTransactionRequest, InsertAccountTransactionRequest__Output as _day_trader_InsertAccountTransactionRequest__Output } from '../day_trader/InsertAccountTransactionRequest'; +import type { InsertAccountTransactionResponse as _day_trader_InsertAccountTransactionResponse, InsertAccountTransactionResponse__Output as _day_trader_InsertAccountTransactionResponse__Output } from '../day_trader/InsertAccountTransactionResponse'; +import type { InsertErrorEventRequest as _day_trader_InsertErrorEventRequest, InsertErrorEventRequest__Output as _day_trader_InsertErrorEventRequest__Output } from '../day_trader/InsertErrorEventRequest'; +import type { InsertErrorEventResponse as _day_trader_InsertErrorEventResponse, InsertErrorEventResponse__Output as _day_trader_InsertErrorEventResponse__Output } from '../day_trader/InsertErrorEventResponse'; +import type { InsertQuoteServerRequest as _day_trader_InsertQuoteServerRequest, InsertQuoteServerRequest__Output as _day_trader_InsertQuoteServerRequest__Output } from '../day_trader/InsertQuoteServerRequest'; +import type { InsertQuoteServerResponse as _day_trader_InsertQuoteServerResponse, InsertQuoteServerResponse__Output as _day_trader_InsertQuoteServerResponse__Output } from '../day_trader/InsertQuoteServerResponse'; +import type { InsertSystemEventRequest as _day_trader_InsertSystemEventRequest, InsertSystemEventRequest__Output as _day_trader_InsertSystemEventRequest__Output } from '../day_trader/InsertSystemEventRequest'; +import type { InsertSystemEventResponse as _day_trader_InsertSystemEventResponse, InsertSystemEventResponse__Output as _day_trader_InsertSystemEventResponse__Output } from '../day_trader/InsertSystemEventResponse'; +import type { InsertUserCommandRequest as _day_trader_InsertUserCommandRequest, InsertUserCommandRequest__Output as _day_trader_InsertUserCommandRequest__Output } from '../day_trader/InsertUserCommandRequest'; +import type { InsertUserCommandResponse as _day_trader_InsertUserCommandResponse, InsertUserCommandResponse__Output as _day_trader_InsertUserCommandResponse__Output } from '../day_trader/InsertUserCommandResponse'; + +export interface LogClient extends grpc.Client { + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + DisplaySummary(argument: _day_trader_DisplaySummaryRequest, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + displaySummary(argument: _day_trader_DisplaySummaryRequest, callback: grpc.requestCallback<_day_trader_DisplaySummaryResponse__Output>): grpc.ClientUnaryCall; + + DumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + DumpLog(argument: _day_trader_DumpLogRequest, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + dumpLog(argument: _day_trader_DumpLogRequest, callback: grpc.requestCallback<_day_trader_DumpLogResponse__Output>): grpc.ClientUnaryCall; + + DumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + DumpLogUser(argument: _day_trader_DumpLogUserRequest, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + dumpLogUser(argument: _day_trader_DumpLogUserRequest, callback: grpc.requestCallback<_day_trader_DumpLogUserResponse__Output>): grpc.ClientUnaryCall; + + InsertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + InsertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + InsertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + InsertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + insertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + insertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + insertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + insertAccountTransaction(argument: _day_trader_InsertAccountTransactionRequest, callback: grpc.requestCallback<_day_trader_InsertAccountTransactionResponse__Output>): grpc.ClientUnaryCall; + + InsertErrorEvent(argument: _day_trader_InsertErrorEventRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + InsertErrorEvent(argument: _day_trader_InsertErrorEventRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + InsertErrorEvent(argument: _day_trader_InsertErrorEventRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + InsertErrorEvent(argument: _day_trader_InsertErrorEventRequest, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + insertErrorEvent(argument: _day_trader_InsertErrorEventRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + insertErrorEvent(argument: _day_trader_InsertErrorEventRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + insertErrorEvent(argument: _day_trader_InsertErrorEventRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + insertErrorEvent(argument: _day_trader_InsertErrorEventRequest, callback: grpc.requestCallback<_day_trader_InsertErrorEventResponse__Output>): grpc.ClientUnaryCall; + + InsertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + InsertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + InsertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + InsertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + insertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + insertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + insertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + insertQuoteServer(argument: _day_trader_InsertQuoteServerRequest, callback: grpc.requestCallback<_day_trader_InsertQuoteServerResponse__Output>): grpc.ClientUnaryCall; + + InsertSystemEvent(argument: _day_trader_InsertSystemEventRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + InsertSystemEvent(argument: _day_trader_InsertSystemEventRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + InsertSystemEvent(argument: _day_trader_InsertSystemEventRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + InsertSystemEvent(argument: _day_trader_InsertSystemEventRequest, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + insertSystemEvent(argument: _day_trader_InsertSystemEventRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + insertSystemEvent(argument: _day_trader_InsertSystemEventRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + insertSystemEvent(argument: _day_trader_InsertSystemEventRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + insertSystemEvent(argument: _day_trader_InsertSystemEventRequest, callback: grpc.requestCallback<_day_trader_InsertSystemEventResponse__Output>): grpc.ClientUnaryCall; + + InsertUserCommand(argument: _day_trader_InsertUserCommandRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + InsertUserCommand(argument: _day_trader_InsertUserCommandRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + InsertUserCommand(argument: _day_trader_InsertUserCommandRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + InsertUserCommand(argument: _day_trader_InsertUserCommandRequest, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + insertUserCommand(argument: _day_trader_InsertUserCommandRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + insertUserCommand(argument: _day_trader_InsertUserCommandRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + insertUserCommand(argument: _day_trader_InsertUserCommandRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + insertUserCommand(argument: _day_trader_InsertUserCommandRequest, callback: grpc.requestCallback<_day_trader_InsertUserCommandResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface LogHandlers extends grpc.UntypedServiceImplementation { + DisplaySummary: grpc.handleUnaryCall<_day_trader_DisplaySummaryRequest__Output, _day_trader_DisplaySummaryResponse>; + + DumpLog: grpc.handleUnaryCall<_day_trader_DumpLogRequest__Output, _day_trader_DumpLogResponse>; + + DumpLogUser: grpc.handleUnaryCall<_day_trader_DumpLogUserRequest__Output, _day_trader_DumpLogUserResponse>; + + InsertAccountTransaction: grpc.handleUnaryCall<_day_trader_InsertAccountTransactionRequest__Output, _day_trader_InsertAccountTransactionResponse>; + + InsertErrorEvent: grpc.handleUnaryCall<_day_trader_InsertErrorEventRequest__Output, _day_trader_InsertErrorEventResponse>; + + InsertQuoteServer: grpc.handleUnaryCall<_day_trader_InsertQuoteServerRequest__Output, _day_trader_InsertQuoteServerResponse>; + + InsertSystemEvent: grpc.handleUnaryCall<_day_trader_InsertSystemEventRequest__Output, _day_trader_InsertSystemEventResponse>; + + InsertUserCommand: grpc.handleUnaryCall<_day_trader_InsertUserCommandRequest__Output, _day_trader_InsertUserCommandResponse>; + +} + +export interface LogDefinition extends grpc.ServiceDefinition { + DisplaySummary: MethodDefinition<_day_trader_DisplaySummaryRequest, _day_trader_DisplaySummaryResponse, _day_trader_DisplaySummaryRequest__Output, _day_trader_DisplaySummaryResponse__Output> + DumpLog: MethodDefinition<_day_trader_DumpLogRequest, _day_trader_DumpLogResponse, _day_trader_DumpLogRequest__Output, _day_trader_DumpLogResponse__Output> + DumpLogUser: MethodDefinition<_day_trader_DumpLogUserRequest, _day_trader_DumpLogUserResponse, _day_trader_DumpLogUserRequest__Output, _day_trader_DumpLogUserResponse__Output> + InsertAccountTransaction: MethodDefinition<_day_trader_InsertAccountTransactionRequest, _day_trader_InsertAccountTransactionResponse, _day_trader_InsertAccountTransactionRequest__Output, _day_trader_InsertAccountTransactionResponse__Output> + InsertErrorEvent: MethodDefinition<_day_trader_InsertErrorEventRequest, _day_trader_InsertErrorEventResponse, _day_trader_InsertErrorEventRequest__Output, _day_trader_InsertErrorEventResponse__Output> + InsertQuoteServer: MethodDefinition<_day_trader_InsertQuoteServerRequest, _day_trader_InsertQuoteServerResponse, _day_trader_InsertQuoteServerRequest__Output, _day_trader_InsertQuoteServerResponse__Output> + InsertSystemEvent: MethodDefinition<_day_trader_InsertSystemEventRequest, _day_trader_InsertSystemEventResponse, _day_trader_InsertSystemEventRequest__Output, _day_trader_InsertSystemEventResponse__Output> + InsertUserCommand: MethodDefinition<_day_trader_InsertUserCommandRequest, _day_trader_InsertUserCommandResponse, _day_trader_InsertUserCommandRequest__Output, _day_trader_InsertUserCommandResponse__Output> +} diff --git a/transaction/src/proto/day_trader/OwnedStock.ts b/transaction/src/proto/day_trader/OwnedStock.ts new file mode 100644 index 0000000..7767023 --- /dev/null +++ b/transaction/src/proto/day_trader/OwnedStock.ts @@ -0,0 +1,16 @@ +// Original file: ../protos/day-trader.proto + + +export interface OwnedStock { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'shares'?: (number | string); +} + +export interface OwnedStock__Output { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'shares'?: (number); +} diff --git a/transaction/src/proto/day_trader/Quote.ts b/transaction/src/proto/day_trader/Quote.ts new file mode 100644 index 0000000..427f5a4 --- /dev/null +++ b/transaction/src/proto/day_trader/Quote.ts @@ -0,0 +1,27 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { QuoteRequest as _day_trader_QuoteRequest, QuoteRequest__Output as _day_trader_QuoteRequest__Output } from '../day_trader/QuoteRequest'; +import type { QuoteResponse as _day_trader_QuoteResponse, QuoteResponse__Output as _day_trader_QuoteResponse__Output } from '../day_trader/QuoteResponse'; + +export interface QuoteClient extends grpc.Client { + Quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + Quote(argument: _day_trader_QuoteRequest, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + quote(argument: _day_trader_QuoteRequest, callback: grpc.requestCallback<_day_trader_QuoteResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface QuoteHandlers extends grpc.UntypedServiceImplementation { + Quote: grpc.handleUnaryCall<_day_trader_QuoteRequest__Output, _day_trader_QuoteResponse>; + +} + +export interface QuoteDefinition extends grpc.ServiceDefinition { + Quote: MethodDefinition<_day_trader_QuoteRequest, _day_trader_QuoteResponse, _day_trader_QuoteRequest__Output, _day_trader_QuoteResponse__Output> +} diff --git a/transaction/src/proto/day_trader/QuoteRequest.ts b/transaction/src/proto/day_trader/QuoteRequest.ts new file mode 100644 index 0000000..f638a73 --- /dev/null +++ b/transaction/src/proto/day_trader/QuoteRequest.ts @@ -0,0 +1,12 @@ +// Original file: ../protos/day-trader.proto + + +export interface QuoteRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); +} + +export interface QuoteRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); +} diff --git a/transaction/src/proto/day_trader/QuoteResponse.ts b/transaction/src/proto/day_trader/QuoteResponse.ts new file mode 100644 index 0000000..eb71109 --- /dev/null +++ b/transaction/src/proto/day_trader/QuoteResponse.ts @@ -0,0 +1,19 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface QuoteResponse { + 'quote'?: (number | string); + 'sym'?: (string); + 'userId'?: (string); + 'timestamp'?: (number | string | Long); + 'cryptoKey'?: (string); +} + +export interface QuoteResponse__Output { + 'quote'?: (number); + 'sym'?: (string); + 'userId'?: (string); + 'timestamp'?: (Long); + 'cryptoKey'?: (string); +} diff --git a/transaction/src/proto/day_trader/SellRequest.ts b/transaction/src/proto/day_trader/SellRequest.ts new file mode 100644 index 0000000..aea8989 --- /dev/null +++ b/transaction/src/proto/day_trader/SellRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SellRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SellRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/transaction/src/proto/day_trader/SellResponse.ts b/transaction/src/proto/day_trader/SellResponse.ts new file mode 100644 index 0000000..4e35233 --- /dev/null +++ b/transaction/src/proto/day_trader/SellResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SellResponse { + 'amount'?: (number | string); + 'shares'?: (number | string); + 'success'?: (boolean); +} + +export interface SellResponse__Output { + 'amount'?: (number); + 'shares'?: (number); + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/SellTrigger.ts b/transaction/src/proto/day_trader/SellTrigger.ts new file mode 100644 index 0000000..6ea42d1 --- /dev/null +++ b/transaction/src/proto/day_trader/SellTrigger.ts @@ -0,0 +1,18 @@ +// Original file: ../protos/day-trader.proto + + +export interface SellTrigger { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'triggerAmount'?: (number | string); + 'sharesToSell'?: (number | string); +} + +export interface SellTrigger__Output { + 'id'?: (number); + 'username'?: (string); + 'stock'?: (string); + 'triggerAmount'?: (number); + 'sharesToSell'?: (number); +} diff --git a/transaction/src/proto/day_trader/SetBuyAmountRequest.ts b/transaction/src/proto/day_trader/SetBuyAmountRequest.ts new file mode 100644 index 0000000..70cfb2f --- /dev/null +++ b/transaction/src/proto/day_trader/SetBuyAmountRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyAmountRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetBuyAmountRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/transaction/src/proto/day_trader/SetBuyAmountResponse.ts b/transaction/src/proto/day_trader/SetBuyAmountResponse.ts new file mode 100644 index 0000000..b32f849 --- /dev/null +++ b/transaction/src/proto/day_trader/SetBuyAmountResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyAmountResponse { + 'balance'?: (number | string); + 'buyAmount'?: (number | string); + 'success'?: (boolean); +} + +export interface SetBuyAmountResponse__Output { + 'balance'?: (number); + 'buyAmount'?: (number); + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/SetBuyTriggerRequest.ts b/transaction/src/proto/day_trader/SetBuyTriggerRequest.ts new file mode 100644 index 0000000..35bbf34 --- /dev/null +++ b/transaction/src/proto/day_trader/SetBuyTriggerRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyTriggerRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetBuyTriggerRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/transaction/src/proto/day_trader/SetBuyTriggerResponse.ts b/transaction/src/proto/day_trader/SetBuyTriggerResponse.ts new file mode 100644 index 0000000..111b099 --- /dev/null +++ b/transaction/src/proto/day_trader/SetBuyTriggerResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetBuyTriggerResponse { + 'triggerAmount'?: (number | string); + 'stock'?: (string); + 'success'?: (boolean); +} + +export interface SetBuyTriggerResponse__Output { + 'triggerAmount'?: (number); + 'stock'?: (string); + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/SetSellAmountRequest.ts b/transaction/src/proto/day_trader/SetSellAmountRequest.ts new file mode 100644 index 0000000..5b359d6 --- /dev/null +++ b/transaction/src/proto/day_trader/SetSellAmountRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellAmountRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetSellAmountRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/transaction/src/proto/day_trader/SetSellAmountResponse.ts b/transaction/src/proto/day_trader/SetSellAmountResponse.ts new file mode 100644 index 0000000..50be09a --- /dev/null +++ b/transaction/src/proto/day_trader/SetSellAmountResponse.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellAmountResponse { + 'currentStockPrice'?: (number | string); + 'numSharesToSell'?: (number | string); + 'success'?: (boolean); +} + +export interface SetSellAmountResponse__Output { + 'currentStockPrice'?: (number); + 'numSharesToSell'?: (number); + 'success'?: (boolean); +} diff --git a/transaction/src/proto/day_trader/SetSellTriggerRequest.ts b/transaction/src/proto/day_trader/SetSellTriggerRequest.ts new file mode 100644 index 0000000..73eab9f --- /dev/null +++ b/transaction/src/proto/day_trader/SetSellTriggerRequest.ts @@ -0,0 +1,14 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellTriggerRequest { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number | string); +} + +export interface SetSellTriggerRequest__Output { + 'userId'?: (string); + 'stockSymbol'?: (string); + 'amount'?: (number); +} diff --git a/transaction/src/proto/day_trader/SetSellTriggerResponse.ts b/transaction/src/proto/day_trader/SetSellTriggerResponse.ts new file mode 100644 index 0000000..845305c --- /dev/null +++ b/transaction/src/proto/day_trader/SetSellTriggerResponse.ts @@ -0,0 +1,8 @@ +// Original file: ../protos/day-trader.proto + + +export interface SetSellTriggerResponse { +} + +export interface SetSellTriggerResponse__Output { +} diff --git a/transaction/src/proto/day_trader/Transaction.ts b/transaction/src/proto/day_trader/Transaction.ts new file mode 100644 index 0000000..ed17f77 --- /dev/null +++ b/transaction/src/proto/day_trader/Transaction.ts @@ -0,0 +1,139 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { AddRequest as _day_trader_AddRequest, AddRequest__Output as _day_trader_AddRequest__Output } from '../day_trader/AddRequest'; +import type { AddResponse as _day_trader_AddResponse, AddResponse__Output as _day_trader_AddResponse__Output } from '../day_trader/AddResponse'; +import type { BuyRequest as _day_trader_BuyRequest, BuyRequest__Output as _day_trader_BuyRequest__Output } from '../day_trader/BuyRequest'; +import type { BuyResponse as _day_trader_BuyResponse, BuyResponse__Output as _day_trader_BuyResponse__Output } from '../day_trader/BuyResponse'; +import type { CancelBuyRequest as _day_trader_CancelBuyRequest, CancelBuyRequest__Output as _day_trader_CancelBuyRequest__Output } from '../day_trader/CancelBuyRequest'; +import type { CancelBuyResponse as _day_trader_CancelBuyResponse, CancelBuyResponse__Output as _day_trader_CancelBuyResponse__Output } from '../day_trader/CancelBuyResponse'; +import type { CancelSellRequest as _day_trader_CancelSellRequest, CancelSellRequest__Output as _day_trader_CancelSellRequest__Output } from '../day_trader/CancelSellRequest'; +import type { CancelSellResponse as _day_trader_CancelSellResponse, CancelSellResponse__Output as _day_trader_CancelSellResponse__Output } from '../day_trader/CancelSellResponse'; +import type { CommitBuyRequest as _day_trader_CommitBuyRequest, CommitBuyRequest__Output as _day_trader_CommitBuyRequest__Output } from '../day_trader/CommitBuyRequest'; +import type { CommitBuyResponse as _day_trader_CommitBuyResponse, CommitBuyResponse__Output as _day_trader_CommitBuyResponse__Output } from '../day_trader/CommitBuyResponse'; +import type { CommitSellRequest as _day_trader_CommitSellRequest, CommitSellRequest__Output as _day_trader_CommitSellRequest__Output } from '../day_trader/CommitSellRequest'; +import type { CommitSellResponse as _day_trader_CommitSellResponse, CommitSellResponse__Output as _day_trader_CommitSellResponse__Output } from '../day_trader/CommitSellResponse'; +import type { CreateUserRequest as _day_trader_CreateUserRequest, CreateUserRequest__Output as _day_trader_CreateUserRequest__Output } from '../day_trader/CreateUserRequest'; +import type { CreateUserResponse as _day_trader_CreateUserResponse, CreateUserResponse__Output as _day_trader_CreateUserResponse__Output } from '../day_trader/CreateUserResponse'; +import type { GetUserRequest as _day_trader_GetUserRequest, GetUserRequest__Output as _day_trader_GetUserRequest__Output } from '../day_trader/GetUserRequest'; +import type { GetUserResponse as _day_trader_GetUserResponse, GetUserResponse__Output as _day_trader_GetUserResponse__Output } from '../day_trader/GetUserResponse'; +import type { SellRequest as _day_trader_SellRequest, SellRequest__Output as _day_trader_SellRequest__Output } from '../day_trader/SellRequest'; +import type { SellResponse as _day_trader_SellResponse, SellResponse__Output as _day_trader_SellResponse__Output } from '../day_trader/SellResponse'; + +export interface TransactionClient extends grpc.Client { + Add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + Add(argument: _day_trader_AddRequest, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + add(argument: _day_trader_AddRequest, callback: grpc.requestCallback<_day_trader_AddResponse__Output>): grpc.ClientUnaryCall; + + Buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + Buy(argument: _day_trader_BuyRequest, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + buy(argument: _day_trader_BuyRequest, callback: grpc.requestCallback<_day_trader_BuyResponse__Output>): grpc.ClientUnaryCall; + + CancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + CancelBuy(argument: _day_trader_CancelBuyRequest, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + cancelBuy(argument: _day_trader_CancelBuyRequest, callback: grpc.requestCallback<_day_trader_CancelBuyResponse__Output>): grpc.ClientUnaryCall; + + CancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + CancelSell(argument: _day_trader_CancelSellRequest, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + cancelSell(argument: _day_trader_CancelSellRequest, callback: grpc.requestCallback<_day_trader_CancelSellResponse__Output>): grpc.ClientUnaryCall; + + CommitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + CommitBuy(argument: _day_trader_CommitBuyRequest, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + commitBuy(argument: _day_trader_CommitBuyRequest, callback: grpc.requestCallback<_day_trader_CommitBuyResponse__Output>): grpc.ClientUnaryCall; + + CommitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + CommitSell(argument: _day_trader_CommitSellRequest, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + commitSell(argument: _day_trader_CommitSellRequest, callback: grpc.requestCallback<_day_trader_CommitSellResponse__Output>): grpc.ClientUnaryCall; + + CreateUser(argument: _day_trader_CreateUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + CreateUser(argument: _day_trader_CreateUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + CreateUser(argument: _day_trader_CreateUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + CreateUser(argument: _day_trader_CreateUserRequest, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + createUser(argument: _day_trader_CreateUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + createUser(argument: _day_trader_CreateUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + createUser(argument: _day_trader_CreateUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + createUser(argument: _day_trader_CreateUserRequest, callback: grpc.requestCallback<_day_trader_CreateUserResponse__Output>): grpc.ClientUnaryCall; + + GetUser(argument: _day_trader_GetUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + GetUser(argument: _day_trader_GetUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + GetUser(argument: _day_trader_GetUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + GetUser(argument: _day_trader_GetUserRequest, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + getUser(argument: _day_trader_GetUserRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + getUser(argument: _day_trader_GetUserRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + getUser(argument: _day_trader_GetUserRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + getUser(argument: _day_trader_GetUserRequest, callback: grpc.requestCallback<_day_trader_GetUserResponse__Output>): grpc.ClientUnaryCall; + + Sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + Sell(argument: _day_trader_SellRequest, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + sell(argument: _day_trader_SellRequest, callback: grpc.requestCallback<_day_trader_SellResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface TransactionHandlers extends grpc.UntypedServiceImplementation { + Add: grpc.handleUnaryCall<_day_trader_AddRequest__Output, _day_trader_AddResponse>; + + Buy: grpc.handleUnaryCall<_day_trader_BuyRequest__Output, _day_trader_BuyResponse>; + + CancelBuy: grpc.handleUnaryCall<_day_trader_CancelBuyRequest__Output, _day_trader_CancelBuyResponse>; + + CancelSell: grpc.handleUnaryCall<_day_trader_CancelSellRequest__Output, _day_trader_CancelSellResponse>; + + CommitBuy: grpc.handleUnaryCall<_day_trader_CommitBuyRequest__Output, _day_trader_CommitBuyResponse>; + + CommitSell: grpc.handleUnaryCall<_day_trader_CommitSellRequest__Output, _day_trader_CommitSellResponse>; + + CreateUser: grpc.handleUnaryCall<_day_trader_CreateUserRequest__Output, _day_trader_CreateUserResponse>; + + GetUser: grpc.handleUnaryCall<_day_trader_GetUserRequest__Output, _day_trader_GetUserResponse>; + + Sell: grpc.handleUnaryCall<_day_trader_SellRequest__Output, _day_trader_SellResponse>; + +} + +export interface TransactionDefinition extends grpc.ServiceDefinition { + Add: MethodDefinition<_day_trader_AddRequest, _day_trader_AddResponse, _day_trader_AddRequest__Output, _day_trader_AddResponse__Output> + Buy: MethodDefinition<_day_trader_BuyRequest, _day_trader_BuyResponse, _day_trader_BuyRequest__Output, _day_trader_BuyResponse__Output> + CancelBuy: MethodDefinition<_day_trader_CancelBuyRequest, _day_trader_CancelBuyResponse, _day_trader_CancelBuyRequest__Output, _day_trader_CancelBuyResponse__Output> + CancelSell: MethodDefinition<_day_trader_CancelSellRequest, _day_trader_CancelSellResponse, _day_trader_CancelSellRequest__Output, _day_trader_CancelSellResponse__Output> + CommitBuy: MethodDefinition<_day_trader_CommitBuyRequest, _day_trader_CommitBuyResponse, _day_trader_CommitBuyRequest__Output, _day_trader_CommitBuyResponse__Output> + CommitSell: MethodDefinition<_day_trader_CommitSellRequest, _day_trader_CommitSellResponse, _day_trader_CommitSellRequest__Output, _day_trader_CommitSellResponse__Output> + CreateUser: MethodDefinition<_day_trader_CreateUserRequest, _day_trader_CreateUserResponse, _day_trader_CreateUserRequest__Output, _day_trader_CreateUserResponse__Output> + GetUser: MethodDefinition<_day_trader_GetUserRequest, _day_trader_GetUserResponse, _day_trader_GetUserRequest__Output, _day_trader_GetUserResponse__Output> + Sell: MethodDefinition<_day_trader_SellRequest, _day_trader_SellResponse, _day_trader_SellRequest__Output, _day_trader_SellResponse__Output> +} diff --git a/transaction/src/proto/day_trader/Trigger.ts b/transaction/src/proto/day_trader/Trigger.ts new file mode 100644 index 0000000..ce9de59 --- /dev/null +++ b/transaction/src/proto/day_trader/Trigger.ts @@ -0,0 +1,97 @@ +// Original file: ../protos/day-trader.proto + +import type * as grpc from '@grpc/grpc-js' +import type { MethodDefinition } from '@grpc/proto-loader' +import type { CancelSetBuyRequest as _day_trader_CancelSetBuyRequest, CancelSetBuyRequest__Output as _day_trader_CancelSetBuyRequest__Output } from '../day_trader/CancelSetBuyRequest'; +import type { CancelSetBuyResponse as _day_trader_CancelSetBuyResponse, CancelSetBuyResponse__Output as _day_trader_CancelSetBuyResponse__Output } from '../day_trader/CancelSetBuyResponse'; +import type { CancelSetSellRequest as _day_trader_CancelSetSellRequest, CancelSetSellRequest__Output as _day_trader_CancelSetSellRequest__Output } from '../day_trader/CancelSetSellRequest'; +import type { CancelSetSellResponse as _day_trader_CancelSetSellResponse, CancelSetSellResponse__Output as _day_trader_CancelSetSellResponse__Output } from '../day_trader/CancelSetSellResponse'; +import type { SetBuyAmountRequest as _day_trader_SetBuyAmountRequest, SetBuyAmountRequest__Output as _day_trader_SetBuyAmountRequest__Output } from '../day_trader/SetBuyAmountRequest'; +import type { SetBuyAmountResponse as _day_trader_SetBuyAmountResponse, SetBuyAmountResponse__Output as _day_trader_SetBuyAmountResponse__Output } from '../day_trader/SetBuyAmountResponse'; +import type { SetBuyTriggerRequest as _day_trader_SetBuyTriggerRequest, SetBuyTriggerRequest__Output as _day_trader_SetBuyTriggerRequest__Output } from '../day_trader/SetBuyTriggerRequest'; +import type { SetBuyTriggerResponse as _day_trader_SetBuyTriggerResponse, SetBuyTriggerResponse__Output as _day_trader_SetBuyTriggerResponse__Output } from '../day_trader/SetBuyTriggerResponse'; +import type { SetSellAmountRequest as _day_trader_SetSellAmountRequest, SetSellAmountRequest__Output as _day_trader_SetSellAmountRequest__Output } from '../day_trader/SetSellAmountRequest'; +import type { SetSellAmountResponse as _day_trader_SetSellAmountResponse, SetSellAmountResponse__Output as _day_trader_SetSellAmountResponse__Output } from '../day_trader/SetSellAmountResponse'; +import type { SetSellTriggerRequest as _day_trader_SetSellTriggerRequest, SetSellTriggerRequest__Output as _day_trader_SetSellTriggerRequest__Output } from '../day_trader/SetSellTriggerRequest'; +import type { SetSellTriggerResponse as _day_trader_SetSellTriggerResponse, SetSellTriggerResponse__Output as _day_trader_SetSellTriggerResponse__Output } from '../day_trader/SetSellTriggerResponse'; + +export interface TriggerClient extends grpc.Client { + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + CancelSetBuy(argument: _day_trader_CancelSetBuyRequest, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + cancelSetBuy(argument: _day_trader_CancelSetBuyRequest, callback: grpc.requestCallback<_day_trader_CancelSetBuyResponse__Output>): grpc.ClientUnaryCall; + + CancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + CancelSetSell(argument: _day_trader_CancelSetSellRequest, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + cancelSetSell(argument: _day_trader_CancelSetSellRequest, callback: grpc.requestCallback<_day_trader_CancelSetSellResponse__Output>): grpc.ClientUnaryCall; + + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + SetBuyAmount(argument: _day_trader_SetBuyAmountRequest, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + setBuyAmount(argument: _day_trader_SetBuyAmountRequest, callback: grpc.requestCallback<_day_trader_SetBuyAmountResponse__Output>): grpc.ClientUnaryCall; + + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + SetBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + setBuyTrigger(argument: _day_trader_SetBuyTriggerRequest, callback: grpc.requestCallback<_day_trader_SetBuyTriggerResponse__Output>): grpc.ClientUnaryCall; + + SetSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + SetSellAmount(argument: _day_trader_SetSellAmountRequest, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + setSellAmount(argument: _day_trader_SetSellAmountRequest, callback: grpc.requestCallback<_day_trader_SetSellAmountResponse__Output>): grpc.ClientUnaryCall; + + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + SetSellTrigger(argument: _day_trader_SetSellTriggerRequest, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, metadata: grpc.Metadata, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, options: grpc.CallOptions, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + setSellTrigger(argument: _day_trader_SetSellTriggerRequest, callback: grpc.requestCallback<_day_trader_SetSellTriggerResponse__Output>): grpc.ClientUnaryCall; + +} + +export interface TriggerHandlers extends grpc.UntypedServiceImplementation { + CancelSetBuy: grpc.handleUnaryCall<_day_trader_CancelSetBuyRequest__Output, _day_trader_CancelSetBuyResponse>; + + CancelSetSell: grpc.handleUnaryCall<_day_trader_CancelSetSellRequest__Output, _day_trader_CancelSetSellResponse>; + + SetBuyAmount: grpc.handleUnaryCall<_day_trader_SetBuyAmountRequest__Output, _day_trader_SetBuyAmountResponse>; + + SetBuyTrigger: grpc.handleUnaryCall<_day_trader_SetBuyTriggerRequest__Output, _day_trader_SetBuyTriggerResponse>; + + SetSellAmount: grpc.handleUnaryCall<_day_trader_SetSellAmountRequest__Output, _day_trader_SetSellAmountResponse>; + + SetSellTrigger: grpc.handleUnaryCall<_day_trader_SetSellTriggerRequest__Output, _day_trader_SetSellTriggerResponse>; + +} + +export interface TriggerDefinition extends grpc.ServiceDefinition { + CancelSetBuy: MethodDefinition<_day_trader_CancelSetBuyRequest, _day_trader_CancelSetBuyResponse, _day_trader_CancelSetBuyRequest__Output, _day_trader_CancelSetBuyResponse__Output> + CancelSetSell: MethodDefinition<_day_trader_CancelSetSellRequest, _day_trader_CancelSetSellResponse, _day_trader_CancelSetSellRequest__Output, _day_trader_CancelSetSellResponse__Output> + SetBuyAmount: MethodDefinition<_day_trader_SetBuyAmountRequest, _day_trader_SetBuyAmountResponse, _day_trader_SetBuyAmountRequest__Output, _day_trader_SetBuyAmountResponse__Output> + SetBuyTrigger: MethodDefinition<_day_trader_SetBuyTriggerRequest, _day_trader_SetBuyTriggerResponse, _day_trader_SetBuyTriggerRequest__Output, _day_trader_SetBuyTriggerResponse__Output> + SetSellAmount: MethodDefinition<_day_trader_SetSellAmountRequest, _day_trader_SetSellAmountResponse, _day_trader_SetSellAmountRequest__Output, _day_trader_SetSellAmountResponse__Output> + SetSellTrigger: MethodDefinition<_day_trader_SetSellTriggerRequest, _day_trader_SetSellTriggerResponse, _day_trader_SetSellTriggerRequest__Output, _day_trader_SetSellTriggerResponse__Output> +} diff --git a/transaction/src/proto/day_trader/UserCommand.ts b/transaction/src/proto/day_trader/UserCommand.ts new file mode 100644 index 0000000..4d081cf --- /dev/null +++ b/transaction/src/proto/day_trader/UserCommand.ts @@ -0,0 +1,23 @@ +// Original file: ../protos/day-trader.proto + +import type { Long } from '@grpc/proto-loader'; + +export interface UserCommand { + 'transactionNum'?: (number); + 'timestamp'?: (number | string | Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number | string); +} + +export interface UserCommand__Output { + 'transactionNum'?: (number); + 'timestamp'?: (Long); + 'server'?: (string); + 'command'?: (string); + 'username'?: (string); + 'stockSymbol'?: (string); + 'funds'?: (number); +} diff --git a/transaction/src/services/Transaction.ts b/transaction/src/services/Transaction.ts new file mode 100644 index 0000000..e929b9b --- /dev/null +++ b/transaction/src/services/Transaction.ts @@ -0,0 +1,293 @@ +import { TransactionHandlers } from "../proto/day_trader/Transaction"; +import { PrismaClient } from '@prisma/client' +import { notExpired } from "../utils/DateUtils"; +import { GetQuote } from "../utils/GetQuote"; +import { Status } from "@grpc/grpc-js/build/src/constants"; + +const prisma = new PrismaClient() + + +const Add: TransactionHandlers['Add'] = async (call, callback) => { + const user = await prisma.user.update({ + where: { username: call.request.userId }, + data: { balance: { increment: call.request.amount } }, + }); + return callback({code: Status.OK}, {balance: user.balance}) +} + +const Buy: TransactionHandlers['Buy'] = async (call, callback) => { + // get user balance + const userBalance = (await prisma.user.findFirstOrThrow({ + where: { + username: call.request.userId + } + })).balance; + + // ensure call.request arguments are present for ts + if(!call.request.amount || !call.request.userId || !call.request.stockSymbol){ + return callback({ code: Status.INVALID_ARGUMENT, details: "Missing amount or userId in request" }, { shares: 0, success: false }); + } + + // ensure user has enough funds + if(!(userBalance < call.request.amount)){ + return callback({ code: Status.FAILED_PRECONDITION, details: "Insufficient funds" }, { shares: 0, success: false }); + } + + // get current price of stock + + const currentPrice: number = Number((await GetQuote(call.request.userId, call.request.stockSymbol)).quote) + + const shares = call.request.amount/currentPrice; + + // create uncommited buy + const createdBuy = await prisma.uncommitedBuy.upsert({ + where: { + username: call.request.userId + }, + update: { + stock: call.request.stockSymbol || '', + amount: call.request.amount, + shares: shares, + }, + create: { + username: call.request.userId, + stock: call.request.stockSymbol || '', + amount: call.request.amount, + shares: shares + } + }) + + if(!createdBuy){ + return callback({code: Status.INTERNAL, details: "Error creating uncommitedBuy"}, { shares: 0, success: false }) + } + + return callback({code: Status.OK}, { shares: shares, success: true }) +} + +const Sell: TransactionHandlers['Sell'] = async (call, callback) => { + // get users current stock + const usersStock = await prisma.ownedStock.findFirst({ + where: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + }) + + // ensure user has stock + if(!usersStock){ + return callback({ code: Status.FAILED_PRECONDITION, details: "user does not own stock" }, { amount: 0.0, shares: 0.0, success: false }) + } + + // ensure arguments are included + if(!call.request.amount || !call.request.userId || !call.request.stockSymbol){ + return callback({ code: Status.INVALID_ARGUMENT, details: "Missing arguments in request" }, { amount: 0.0, shares: 0.0, success: false }); + } + + // get current price of stock + const currentPrice = Number((await GetQuote(call.request.userId, call.request.stockSymbol)).quote) + const shares = call.request.amount/currentPrice; + + // ensure user has more stock then attempting to sell + if(usersStock.shares < shares){ + return callback({ code: Status.FAILED_PRECONDITION, details: "Insufficient owned stock" }, { amount: 0.0, shares: 0.0, success: false } ); + } + + // create uncommited buy + const createdSell = await prisma.uncommitedSell.upsert({ + where: { + username: call.request.userId + }, + update: { + stock: call.request.stockSymbol || '', + amount: call.request.amount, + shares: shares, + }, + create: { + username: call.request.userId, + stock: call.request.stockSymbol || '', + amount: call.request.amount, + shares: shares, + } + }) + + return callback({code: Status.OK}, { amount: createdSell.amount, shares: createdSell.shares, success: true}) +} + +const CancelBuy: TransactionHandlers['CancelBuy'] = async (call, callback) => { + const deletedBuy = await prisma.uncommitedBuy.delete({ + where: { + username: call.request.userId, + } + }) + return callback({code: Status.OK}, { success: true }) +} + +const CancelSell: TransactionHandlers['CancelSell'] = async (call, callback) => { + const deletedSell = await prisma.uncommitedSell.delete({ + where: { + username: call.request.userId, + } + }) + return callback({code: Status.OK}, { success: true }) +} + +const CommitBuy: TransactionHandlers['CommitBuy'] = async (call, callback) => { + const buyToCommit = await prisma.uncommitedBuy.findFirst({ + where: { + username: call.request.userId, + } + }) + + // ensure user has made buy request + if(!buyToCommit){ + return callback({ code: Status.FAILED_PRECONDITION, details: "user did not make a buy request" }, { stocksOwned: 0.0, balance: 0.0, success: false }) + } + + // ensures its not expired + if(!(notExpired(buyToCommit.expiresAt))){ + return callback({ code: Status.DEADLINE_EXCEEDED, details: "Buy request expired" }, { stocksOwned: 0.0, balance: 0.0, success: false }) + } + + // upsert ownedStock + const newPurchasedStock = await prisma.ownedStock.upsert({ + where: { + username_stock: { + username: buyToCommit.username, + stock: buyToCommit.stock, + } + }, + update: { shares: { increment: buyToCommit.shares } }, + create: { + username: buyToCommit.username, + stock: buyToCommit.stock, + shares: buyToCommit.amount, + } + }) + + // remove balance from user account + const decrementedUserBalance = await prisma.user.update({ + where: { username: buyToCommit.username }, + data: { balance: { decrement: buyToCommit.amount }} + }); + + // remove uncommited buy + const deletedBuy = await prisma.uncommitedBuy.delete({ + where: { + username: call.request.userId, + } + }) + + return callback({code: Status.OK}, { stocksOwned: newPurchasedStock.shares, balance: decrementedUserBalance.balance, success: true }) +} + +const CommitSell: TransactionHandlers['CommitSell'] = async (call, callback) => { + const sellToCommit = await prisma.uncommitedSell.findFirst({ + where: { + username: call.request.userId, + } + }) + + // ensure user has made sell request + if(!sellToCommit){ + return callback({ code: Status.FAILED_PRECONDITION, details: "user did not make a sell request" }, { stocksOwned: 0.0, balance: 0.0, success: false }) + } + + // ensures its not expired + if(!(notExpired(sellToCommit.expiresAt))){ + return callback({ code: Status.DEADLINE_EXCEEDED, details: "Sell request expired" }, { stocksOwned: 0.0, balance: 0.0, success: false }) + } + + // update stock owned amount + const newPurchasedStock = await prisma.ownedStock.update({ + where: { + username_stock: { + username: sellToCommit.username, + stock: sellToCommit.stock, + } + }, + data: { shares: { decrement: sellToCommit.shares } } + }) + + // if updated stock has less then 0 amount delete it + if(newPurchasedStock.shares <= 0){ + const deletedOwnedStock = await prisma.ownedStock.delete({ + where: { + username_stock: { + username: sellToCommit.username, + stock: sellToCommit.stock, + } + } + }); + } + + // add balance to user account + const incrementedUserBalance = await prisma.user.update({ + where: { username: sellToCommit.username }, + data: { balance: { increment: sellToCommit.amount }} + }); + + // remove uncommited sell + const deletedSell = await prisma.uncommitedSell.delete({ + where: { + username: sellToCommit.username, + } + }) + + return callback({code: Status.OK}, { stocksOwned: newPurchasedStock.shares, balance: incrementedUserBalance.balance, success: true }) +} + +const CreateUser: TransactionHandlers['CreateUser'] = async (call, callback) => { + const existingUser = await prisma.user.findUnique({ + where: {username: call.request.userId} + }); + if(existingUser){ + return callback({code: Status.ALREADY_EXISTS, details: "User exists with that username"}, { username: "error", success: false }); + } + if(!call.request.userId){ + return callback({code: Status.INVALID_ARGUMENT, details: "Include username in request"}, { username: "error", success: false }); + } + const newUser = await prisma.user.create({ + data: { + username: call.request.userId, + } + }); + return callback({code: Status.OK}, { username: newUser.username, success: true }) +} + +const GetUser: TransactionHandlers['GetUser'] = async (call, callback) => { + const user = await prisma.user.findUnique({ + where: {username: call.request.userId}, + include: { + OwnedStock: true, + BuyTrigger: true, + SellTrigger: true, + } + }); + if(!user){ + return callback({code: Status.NOT_FOUND, details: "User not found"}, { username: "error", balance: 0.0, role: "error", success: false, ownedStock: [], buyTriggers: [], sellTriggers: [] }) + } + + return callback({code: Status.OK}, { + username: user.username, + balance: user.balance, + role: user.role, + success: true, + ownedStock: user.OwnedStock, + buyTriggers: [], + sellTriggers: [], + // buyTriggers: user.BuyTrigger, + // sellTriggers: user.SellTrigger + }) +} + +export const TransactionImplementations: TransactionHandlers = { + Add, + Buy, + CancelBuy, + CancelSell, + CommitBuy, + CommitSell, + Sell, + CreateUser, + GetUser, +} \ No newline at end of file diff --git a/transaction/src/services/Trigger.ts b/transaction/src/services/Trigger.ts new file mode 100644 index 0000000..19b40a9 --- /dev/null +++ b/transaction/src/services/Trigger.ts @@ -0,0 +1,248 @@ +import { TriggerHandlers } from "../proto/day_trader/Trigger"; +import { PrismaClient } from '@prisma/client' +import { Status } from "@grpc/grpc-js/build/src/constants"; +import { GetQuote } from "../utils/GetQuote"; + +const prisma = new PrismaClient() + +const CancelSetBuy: TriggerHandlers['CancelSetBuy'] = async (call, callback) => { + if(!call.request.userId || !call.request.stockSymbol ){ + return callback({code: Status.INVALID_ARGUMENT, message: "Invalid arguments"}, {success: false}) + } + try{ + const buyTrigger = await prisma.buyTrigger.delete({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + } + }) + return callback({code: Status.OK}, {success: true}); + }catch(error){ + return callback({code: Status.NOT_FOUND, message: "Error on delete buy trigger"}, {success: false}); + } +} + +const CancelSetSell: TriggerHandlers['CancelSetSell'] = async (call, callback) => { + if(!call.request.userId || !call.request.stockSymbol ){ + return callback({code: Status.INVALID_ARGUMENT, message: "Invalid arguments"}, {success: false}) + } + try{ + const sellTrigger = await prisma.sellTrigger.delete({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + } + }) + return callback({code: Status.OK}, { success: true }); + }catch(error){ + return callback({code: Status.NOT_FOUND, message: "Error on delete sell trigger"}, {success: false}); + } +} + +const SetBuyAmount: TriggerHandlers['SetBuyAmount'] = async (call, callback) => { + const user = await prisma.user.findUnique({ + where: { + username: call.request.userId, + }, + include: { + BuyTrigger: { + where: { + stock: call.request.stockSymbol, + } + } + } + }) + // error handling + if(!call.request.userId || !call.request.stockSymbol || !call.request.amount || !user){ + const message = user ? "Invalid arguments" : "Invalid UserId"; + return callback({code: Status.INVALID_ARGUMENT, message: message}, { balance: 0.0, buyAmount: 0.0, success: false}) + } + // need to check if existing trigger exists for user_stock + // if it does, ensure the difference of the balance is taken/given + const existingTrigger = user.BuyTrigger[0] + let userBalanceTotal = user.balance; + + if(user.BuyTrigger){ + userBalanceTotal += existingTrigger.buyAmount + } + + if(userBalanceTotal < call.request.amount){ + return callback({code: Status.INVALID_ARGUMENT, message: "Insufficent funds"}, { balance: 0.0, buyAmount: 0.0, success: false}) + } + if(user.BuyTrigger){ + await prisma.user.update({ + where: { + username: call.request.userId + }, + data: { + balance: { increment: existingTrigger.buyAmount } + } + }); + } + + const removeFunds = await prisma.user.update({ + where: { + username: call.request.userId + }, + data: { + balance: { decrement: call.request.amount } + } + }); + + const AddedTrigger = await prisma.buyTrigger.upsert({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + }, + update: { + stock: call.request.stockSymbol, + buyAmount: call.request.amount, + }, + create: { + username: call.request.userId, + stock: call.request.stockSymbol, + buyAmount: call.request.amount, + } + }) + + return callback({code: Status.OK}, { balance: removeFunds.balance, buyAmount: AddedTrigger.buyAmount, success: false}) +} + +const SetBuyTrigger: TriggerHandlers['SetBuyTrigger'] = async (call, callback) => { + if(!call.request.userId || !call.request.stockSymbol || !call.request.amount){ + return callback({code: Status.INVALID_ARGUMENT, message: "Invalid arguments"}, { triggerAmount: 0.0, stock: "error", success: false }) + } + const buyTrigger = await prisma.buyTrigger.findUnique({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + } + }) + if(!buyTrigger){ + return callback({code: Status.NOT_FOUND, message: "No buy trigger was found"}, { triggerAmount: 0.0, stock: "error", success: false }) + } + const updatedTrigger = await prisma.buyTrigger.update({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + }, + data: { + triggerAmount: call.request.amount + } + }) + + return callback({code: Status.OK}, { triggerAmount: updatedTrigger.triggerAmount || undefined, stock: updatedTrigger.stock, success: true }) +} + +const SetSellAmount: TriggerHandlers['SetSellAmount'] = async (call, callback) => { + const user = await prisma.user.findUnique({ + where: { + username: call.request.userId, + }, + include: { + OwnedStock: { + where: { + stock: call.request.stockSymbol, + } + } + } + }) + // error handling + if(!call.request.userId || !call.request.stockSymbol || !call.request.amount || !user){ + const message = user ? "Invalid arguments" : "Invalid UserId"; + return callback({code: Status.INVALID_ARGUMENT, message: message}, {}) + } + if(!user.OwnedStock[0]){ + return callback({code: Status.FAILED_PRECONDITION, message: "User does not own stock"}, { currentStockPrice: 0.0, numSharesToSell: 0.0, success: false}) + } + + const currentStockPrice = Number((await GetQuote(call.request.userId, call.request.stockSymbol)).quote); + const numSharesToSell = call.request.amount/currentStockPrice; + const dollarValueOwnedCurrently = currentStockPrice*user.OwnedStock[0].shares + if(dollarValueOwnedCurrently < call.request.amount){ + return callback({code: Status.FAILED_PRECONDITION, message: "Not enough stock owned"}, { currentStockPrice: 0.0, numSharesToSell: 0.0, success: false}) + } + + const AddedTrigger = await prisma.sellTrigger.upsert({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + }, + update: { + stock: call.request.stockSymbol, + sharesToSell: numSharesToSell, + }, + create: { + username: call.request.userId, + stock: call.request.stockSymbol, + sharesToSell: numSharesToSell, + } + }); + + return callback({code: Status.OK}, { currentStockPrice: currentStockPrice, numSharesToSell: numSharesToSell, success: true}) +} + +const SetSellTrigger: TriggerHandlers['SetSellTrigger'] = async (call, callback) => { + if(!call.request.userId || !call.request.stockSymbol || !call.request.amount){ + return callback({code: Status.INVALID_ARGUMENT, message: "Invalid arguments"}, {stock: "error", sharesLeft: 0.0, success: false }) + } + const sellTrigger = await prisma.sellTrigger.findUnique({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + } + }) + if(!sellTrigger){ + return callback({code: Status.NOT_FOUND, message: "No sell trigger was found"}, {stock: "error", sharesLeft: 0.0, success: false }) + } + + // take stock from user + const takenStock = await prisma.ownedStock.update({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + }, + data: { + shares: { decrement: sellTrigger.sharesToSell } + } + }) + + const updatedTrigger = await prisma.sellTrigger.update({ + where: { + username_stock: { + username: call.request.userId, + stock: call.request.stockSymbol, + } + }, + data: { + triggerAmount: call.request.amount + } + }) + + return callback({code: Status.OK}, {stock: updatedTrigger.stock, sharesLeft: takenStock.shares, success: true }) +} + +export const TriggerImplementation: TriggerHandlers = { + CancelSetBuy, + CancelSetSell, + SetBuyAmount, + SetBuyTrigger, + SetSellAmount, + SetSellTrigger, +} \ No newline at end of file diff --git a/transaction/src/utils/CheckTriggers.ts b/transaction/src/utils/CheckTriggers.ts new file mode 100644 index 0000000..1bb1936 --- /dev/null +++ b/transaction/src/utils/CheckTriggers.ts @@ -0,0 +1,16 @@ +import { PrismaClient } from '@prisma/client'; +import { GetQuote } from './GetQuote'; + +const prisma = new PrismaClient() + +export async function CheckTriggers(){ + console.log("Checking Triggers") + const buyTriggers = await prisma.buyTrigger.findMany({select: {stock: true}}) + const sellTriggers = await prisma.sellTrigger.findMany({select: {stock: true}}) + const allTriggeredStocks = [...(buyTriggers.map((trigger) => {return trigger.stock})), ...(sellTriggers.map((trigger) => {return trigger.stock}))]; + const uniqueTriggeredStocks = [...new Set(allTriggeredStocks)]; + for(const stock of uniqueTriggeredStocks){ + // GetQuote("whatuseriddoiuse", stock); + console.log("Would Check Stock price of: ",stock); + } +} \ No newline at end of file diff --git a/transaction/src/utils/DateUtils.ts b/transaction/src/utils/DateUtils.ts new file mode 100644 index 0000000..b1956fb --- /dev/null +++ b/transaction/src/utils/DateUtils.ts @@ -0,0 +1,5 @@ +export const notExpired = (expiresAt: Date): boolean => { + const dateNow = new Date(); + const dateExpiresAt = new Date(expiresAt); + return dateNow.getTime() < dateExpiresAt.getTime(); +} \ No newline at end of file diff --git a/transaction/src/utils/GetQuote.ts b/transaction/src/utils/GetQuote.ts new file mode 100644 index 0000000..7c86392 --- /dev/null +++ b/transaction/src/utils/GetQuote.ts @@ -0,0 +1,148 @@ +import { QuoteResponse } from "../proto/day_trader/QuoteResponse"; +import * as grpc from '@grpc/grpc-js'; +import {loadSync} from "@grpc/proto-loader"; +import { ProtoGrpcType } from "../proto/day-trader"; +import { PrismaClient } from "@prisma/client"; +import { SellResponse } from "../proto/day_trader/SellResponse"; +import { CommitSellResponse } from '../proto/day_trader/CommitSellResponse'; +import { BuyResponse } from "../proto/day_trader/BuyResponse"; +import { CommitBuyResponse } from "../proto/day_trader/CommitBuyResponse"; + +const prisma = new PrismaClient(); + +const def = loadSync(__dirname + "/../proto/day-trader-copy.proto") +const definitions = grpc.loadPackageDefinition(def) as unknown as ProtoGrpcType +const QuoteClient = new definitions.day_trader.Quote('localhost:50051', grpc.credentials.createInsecure()); +const TransactionClient = new definitions.day_trader.Transaction(`0.0.0.0:${process.env.PORT || 50051}`, grpc.credentials.createInsecure()); + +export async function GetQuote(userId: string, stockSymbol: string): Promise{ + const quote = await (new Promise((accept, reject) => { + QuoteClient.Quote({ + userId: userId, + stockSymbol: stockSymbol + }, (error, val) => { + if(!error && val){ + accept(val); + }else{ + reject(error); + } + }); + })); + CheckTriggersFromQuote(quote); + return quote +} + +export async function CheckTriggersFromQuote(quote: QuoteResponse){ + const sellTriggers = await prisma.sellTrigger.findMany({ + where: { + stock: quote.sym, + triggerAmount: { gte: Number(quote.quote)} + } + }) + + for(const sellTrigger of sellTriggers){ + // first give them the stock back before it is taken + // as sell method will decrement them again + const incrementedStock = await prisma.ownedStock.update({ + where: { + username_stock: { + username: sellTrigger.username, + stock: sellTrigger.stock, + } + }, + data: { + shares: { increment: sellTrigger.sharesToSell} + } + }) + // sell + const sellResponse = await (new Promise((accept, reject) => { + TransactionClient.sell({ + userId: sellTrigger.username, + stockSymbol: sellTrigger.stock, + amount: (sellTrigger.sharesToSell*Number(quote.quote)), + }, (error, val) => { + if(!error && val){ + accept(val); + }else{ + reject(error); + } + }); + })); + // commit sell + const commitSellResponse = await (new Promise((accept, reject) => { + TransactionClient.commitSell({ + userId: sellTrigger.username, + }, (error, val) => { + if(!error && val){ + accept(val); + }else{ + reject(error); + } + }); + })); + // delete sellTrigger + const deleteTriggerResponse = await prisma.sellTrigger.delete({ + where: { + username_stock: { + username: sellTrigger.username, + stock: sellTrigger.stock, + } + } + }) + } + + const buyTriggers = await prisma.buyTrigger.findMany({ + where: { + stock: quote.sym, + triggerAmount: { lte: Number(quote.quote)} + } + }) + for(const buyTrigger of buyTriggers){ + // first give them the money back before it is taken + // as buy method will decrement them again + const incrementedBalance = await prisma.user.update({ + where: { + username: buyTrigger.username, + }, + data: { + balance: { increment: buyTrigger.buyAmount} + } + }) + // buy + const buyResponse = await (new Promise((accept, reject) => { + TransactionClient.buy({ + userId: buyTrigger.username, + stockSymbol: buyTrigger.stock, + amount: buyTrigger.buyAmount, + }, (error, val) => { + if(!error && val){ + accept(val); + }else{ + reject(error); + } + }); + })); + // commit buy + const commitBuyResponse = await (new Promise((accept, reject) => { + TransactionClient.commitBuy({ + userId: buyTrigger.username, + }, (error, val) => { + if(!error && val){ + accept(val); + }else{ + reject(error); + } + }); + })); + // delete buyTrigger + const deleteTriggerResponse = await prisma.buyTrigger.delete({ + where: { + username_stock: { + username: buyTrigger.username, + stock: buyTrigger.stock, + } + } + }) + } + +} \ No newline at end of file