diff --git a/app/android/.idea/.gitignore b/app/android/.idea/.gitignore
deleted file mode 100644
index 13566b8..0000000
--- a/app/android/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Editor-based HTTP Client requests
-/httpRequests/
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
diff --git a/app/android/.idea/compiler.xml b/app/android/.idea/compiler.xml
deleted file mode 100644
index b86273d..0000000
--- a/app/android/.idea/compiler.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/android/.idea/deploymentTargetSelector.xml b/app/android/.idea/deploymentTargetSelector.xml
deleted file mode 100644
index b268ef3..0000000
--- a/app/android/.idea/deploymentTargetSelector.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/android/.idea/misc.xml b/app/android/.idea/misc.xml
deleted file mode 100644
index 0023c81..0000000
--- a/app/android/.idea/misc.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/android/.idea/runConfigurations.xml b/app/android/.idea/runConfigurations.xml
deleted file mode 100644
index 931b96c..0000000
--- a/app/android/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/android/app/src/main/AndroidManifest.xml b/app/android/app/src/main/AndroidManifest.xml
index 4e56837..4d7ca38 100644
--- a/app/android/app/src/main/AndroidManifest.xml
+++ b/app/android/app/src/main/AndroidManifest.xml
@@ -38,6 +38,4 @@
-
-
diff --git a/app/android/build.gradle b/app/android/build.gradle
index f1b3b0e..85a5dda 100644
--- a/app/android/build.gradle
+++ b/app/android/build.gradle
@@ -7,8 +7,8 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.7.2'
- classpath 'com.google.gms:google-services:4.4.2'
+ classpath 'com.android.tools.build:gradle:8.2.1'
+ classpath 'com.google.gms:google-services:4.4.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/app/android/daemon/8.9/registry.bin.lock b/app/android/daemon/8.9/registry.bin.lock
new file mode 100644
index 0000000..e69de29
diff --git a/app/android/gradle/wrapper/gradle-wrapper.properties b/app/android/gradle/wrapper/gradle-wrapper.properties
index dedd5d1..c747538 100644
--- a/app/android/gradle/wrapper/gradle-wrapper.properties
+++ b/app/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
diff --git a/app/package-lock.json b/app/package-lock.json
index 36fd9c7..3e3acdc 100644
--- a/app/package-lock.json
+++ b/app/package-lock.json
@@ -16,6 +16,7 @@
"@capacitor/status-bar": "6.0.1",
"@ionic/vue": "^8.0.0",
"@ionic/vue-router": "^8.0.0",
+ "axios": "^1.8.1",
"ionicons": "^7.0.0",
"vue": "^3.3.0",
"vue-router": "^4.2.0"
@@ -4109,7 +4110,6 @@
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true,
"license": "MIT"
},
"node_modules/at-least-node": {
@@ -4139,6 +4139,23 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/axios": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.1.tgz",
+ "integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
"node_modules/babel-plugin-polyfill-corejs2": {
"version": "0.4.11",
"resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz",
@@ -4643,7 +4660,6 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
@@ -4982,7 +4998,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.4.0"
@@ -5791,6 +5806,26 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/follow-redirects": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
+ "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/foreground-child": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
@@ -5835,7 +5870,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz",
"integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
@@ -7094,7 +7128,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
@@ -7104,7 +7137,6 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
diff --git a/app/package.json b/app/package.json
index 3809f15..05eb686 100644
--- a/app/package.json
+++ b/app/package.json
@@ -20,6 +20,7 @@
"@capacitor/status-bar": "6.0.1",
"@ionic/vue": "^8.0.0",
"@ionic/vue-router": "^8.0.0",
+ "axios": "^1.8.1",
"ionicons": "^7.0.0",
"vue": "^3.3.0",
"vue-router": "^4.2.0"
diff --git a/app/readme.md b/app/readme.md
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/services/PitcherService.ts b/app/src/services/PitcherService.ts
index 36a609c..e9eface 100644
--- a/app/src/services/PitcherService.ts
+++ b/app/src/services/PitcherService.ts
@@ -1,6 +1,13 @@
import Pitcher from "@/types/Pitcher";
import {pitchers} from "@/data/pitchers";
+import axios, { AxiosInstance } from "axios";
+const apiClient: AxiosInstance = axios.create({
+ baseURL: "http://localhost:8080/api",
+ headers: {
+ "Content-type": "application/json",
+ },
+});
class PitcherService {
private static instance: PitcherService;
@@ -15,16 +22,18 @@ class PitcherService {
}
async getAllPitchers(): Promise {
- return pitchers.values().toArray();
+ return apiClient.get('/pitchers')
+ // return pitchers.values().toArray();
}
async getPitcher(id: number): Promise {
- const pitcher = pitchers.get(id);
- if (pitcher !== undefined) {
- return pitcher;
- } else {
- return Promise.reject();
- }
+ return apiClient.get(`/pitchers/${id}`)
+ // const pitcher = pitchers.get(id);
+ // if (pitcher !== undefined) {
+ // return pitcher;
+ // } else {
+ // return Promise.reject();
+ // }
}
}
diff --git a/backend/database/example-db.sqlite b/backend/database/example-db.sqlite
new file mode 100644
index 0000000..2f45204
Binary files /dev/null and b/backend/database/example-db.sqlite differ
diff --git a/backend/database/setup.js b/backend/database/setup.js
index 953c2dc..5cc8f57 100644
--- a/backend/database/setup.js
+++ b/backend/database/setup.js
@@ -7,10 +7,10 @@ async function reset() {
await sequelize.sync({ force: true });
await sequelize.models.user.bulkCreate([
- { firstName: 'Nolan', lastName: 'Ryan', email: 'ryan.nolan@bullpen.com', password: 'nolan' },
- { firstName: 'Sandy', lastName: 'Koufax', email: 'sandy.koufax@bullpen.com', password: 'sandy' },
- { firstName: 'Pedro', lastName: 'Martinez', email: 'pedro.martinez@bullpen.com', password: 'pedro' },
- { firstName: 'randy', lastName: 'johnson', email: 'randy.johnson@bullpen.com', password: 'randy' },
+ { firstName: 'Nolan', lastName: 'Ryan', dateOfBirth: new Date(1947, 1, 31), email: 'ryan.nolan@bullpen.com', password: 'nolan' },
+ { firstName: 'Sandy', lastName: 'Koufax', dateOfBirth: new Date(1935, 12, 30), email: 'sandy.koufax@bullpen.com', password: 'sandy' },
+ { firstName: 'Pedro', lastName: 'Martinez', dateOfBirth: new Date(1971, 10, 25), email: 'pedro.martinez@bullpen.com', password: 'pedro' },
+ { firstName: 'randy', lastName: 'johnson', dateOfBirth: new Date(1963, 9, 10), email: 'randy.johnson@bullpen.com', password: 'randy' },
]);
await sequelize.models.pitchType.bulkCreate([
diff --git a/backend/migrations/20250213191228-create-user.js b/backend/migrations/20250213191228-create-user.js
deleted file mode 100644
index ea74cd8..0000000
--- a/backend/migrations/20250213191228-create-user.js
+++ /dev/null
@@ -1,37 +0,0 @@
-'use strict';
-/** @type {import('sequelize-cli').Migration} */
-module.exports = {
- async up(queryInterface, Sequelize) {
- await queryInterface.createTable('Users', {
- id: {
- allowNull: false,
- autoIncrement: true,
- primaryKey: true,
- type: Sequelize.INTEGER
- },
- firstName: {
- type: Sequelize.STRING
- },
- lastName: {
- type: Sequelize.STRING
- },
- email: {
- type: Sequelize.STRING
- },
- password: {
- type: Sequelize.STRING
- },
- createdAt: {
- allowNull: false,
- type: Sequelize.DATE
- },
- updatedAt: {
- allowNull: false,
- type: Sequelize.DATE
- }
- });
- },
- async down(queryInterface, Sequelize) {
- await queryInterface.dropTable('Users');
- }
-};
\ No newline at end of file
diff --git a/backend/sequelize/models/user.model.js b/backend/sequelize/models/user.model.js
index 46d0807..c281f4d 100644
--- a/backend/sequelize/models/user.model.js
+++ b/backend/sequelize/models/user.model.js
@@ -20,6 +20,10 @@ module.exports = (sequelize) => {
type: DataTypes.STRING,
allowNull: false
},
+ dateOfBirth: {
+ type: DataTypes.DATE,
+ allowNull: false
+ },
email: {
type: DataTypes.STRING,
allowNull: false,