refactor: rename delta-force-guide to ahsarah-guide and merge into monorepo
- Merge delta-force-guide-server into server/ subdirectory - Merge delta-force-guide-web into web/ subdirectory - Rename Java package com.onixbyte.deltaforceguide to com.onixbyte.ahsarahguide - Rename DeltaForceGuideApplication to AhsarahGuideApplication - Update all config files, Dockerfiles, and CI workflows - Update frontend display name and repo links - Update legal documents (EULA, PrivacyPolicy) - Create root-level CLAUDE.md, README.md, LICENCE, .gitignore, .gitattributes - Move CI workflows to root .gitea/workflows/ with working-directory - Delete .gitlab-ci.yml (legacy) - Preserve git history from both original repositories
This commit is contained in:
144 files changed
+492
-966
No files matched your search
File renamed without changes.
+7
-4
@@ -5,11 +5,14 @@ on:
|
|||||||
types: [published]
|
types: [published]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
APP_NAME: delta-force-guide-server
|
APP_NAME: ahsarah-guide-server
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-and-release:
|
build-and-release:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: server
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
@@ -63,8 +66,8 @@ jobs:
|
|||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
uses: docker/build-push-action@v6
|
uses: docker/build-push-action@v6
|
||||||
with:
|
with:
|
||||||
context: .
|
context: server
|
||||||
file: Dockerfile.ci
|
file: server/Dockerfile.ci
|
||||||
build-args: |
|
build-args: |
|
||||||
JAR_FILE=${{ steps.jar.outputs.file }}
|
JAR_FILE=${{ steps.jar.outputs.file }}
|
||||||
IMAGE_VERSION=${{ gitea.event.release.tag_name }}
|
IMAGE_VERSION=${{ gitea.event.release.tag_name }}
|
||||||
@@ -83,4 +86,4 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
destination_container_repo: ${{ vars.DOCKER_HUB_USERNAME }}/${{ env.APP_NAME }}
|
destination_container_repo: ${{ vars.DOCKER_HUB_USERNAME }}/${{ env.APP_NAME }}
|
||||||
provider: dockerhub
|
provider: dockerhub
|
||||||
readme_file: README.md
|
readme_file: server/README.md
|
||||||
@@ -8,6 +8,9 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
name: Build release archive
|
name: Build release archive
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: web
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
+41
-87
@@ -97,29 +97,6 @@ fabric.properties
|
|||||||
# Editor-based HTTP Client
|
# Editor-based HTTP Client
|
||||||
http-client.private.env.json
|
http-client.private.env.json
|
||||||
|
|
||||||
### Gradle
|
|
||||||
.gradle
|
|
||||||
**/build/
|
|
||||||
!**/src/**/build/
|
|
||||||
|
|
||||||
# Ignore Gradle GUI config
|
|
||||||
gradle-app.setting
|
|
||||||
|
|
||||||
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
|
||||||
!gradle-wrapper.jar
|
|
||||||
|
|
||||||
# Avoid ignore Gradle wrappper properties
|
|
||||||
!gradle-wrapper.properties
|
|
||||||
|
|
||||||
# Cache of project
|
|
||||||
.gradletasknamecache
|
|
||||||
|
|
||||||
# Eclipse Gradle plugin generated files
|
|
||||||
# Eclipse Core
|
|
||||||
.project
|
|
||||||
# JDT-specific (Eclipse Java Development Tools)
|
|
||||||
.classpath
|
|
||||||
|
|
||||||
### Java
|
### Java
|
||||||
# Compiled class file
|
# Compiled class file
|
||||||
*.class
|
*.class
|
||||||
@@ -146,10 +123,29 @@ gradle-app.setting
|
|||||||
hs_err_pid*
|
hs_err_pid*
|
||||||
replay_pid*
|
replay_pid*
|
||||||
|
|
||||||
|
### Gradle
|
||||||
|
.gradle
|
||||||
|
**/build/
|
||||||
|
!**/src/**/build/
|
||||||
|
|
||||||
|
!gradle/
|
||||||
|
!gradle/wrapper
|
||||||
|
!gradle/wrapper/gradle-wrapper.jar
|
||||||
|
!gradle/wrapper/gradle-wrapper.properties
|
||||||
|
gradle-app.setting
|
||||||
|
.gradletasknamecache
|
||||||
|
|
||||||
|
# Eclipse Gradle plugin generated files
|
||||||
|
# Eclipse Core
|
||||||
|
.project
|
||||||
|
# JDT-specific (Eclipse Java Development Tools)
|
||||||
|
.classpath
|
||||||
|
|
||||||
|
gradle.properties
|
||||||
|
|
||||||
### Node.js
|
### Node.js
|
||||||
# Logs
|
# Logs
|
||||||
logs
|
logs
|
||||||
#*.log
|
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
@@ -164,9 +160,6 @@ pids
|
|||||||
*.seed
|
*.seed
|
||||||
*.pid.lock
|
*.pid.lock
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
# Coverage directory used by tools like istanbul
|
||||||
coverage
|
coverage
|
||||||
*.lcov
|
*.lcov
|
||||||
@@ -174,25 +167,10 @@ coverage
|
|||||||
# nyc test coverage
|
# nyc test coverage
|
||||||
.nyc_output
|
.nyc_output
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
# Dependency directories
|
||||||
node_modules/
|
node_modules/
|
||||||
jspm_packages/
|
jspm_packages/
|
||||||
|
|
||||||
# Snowpack dependency directory (https://snowpack.dev/)
|
|
||||||
web_modules/
|
|
||||||
|
|
||||||
# TypeScript cache
|
# TypeScript cache
|
||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
|
|
||||||
@@ -205,9 +183,6 @@ web_modules/
|
|||||||
# Optional stylelint cache
|
# Optional stylelint cache
|
||||||
.stylelintcache
|
.stylelintcache
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
# Output of 'npm pack'
|
||||||
*.tgz
|
*.tgz
|
||||||
|
|
||||||
@@ -231,45 +206,9 @@ out
|
|||||||
.nuxt
|
.nuxt
|
||||||
dist
|
dist
|
||||||
|
|
||||||
# Gatsby files
|
# Vite logs files
|
||||||
.cache/
|
vite.config.js.timestamp-*
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
vite.config.ts.timestamp-*
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
||||||
# public
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# vuepress v2.x temp and cache directory
|
|
||||||
.temp
|
|
||||||
#.cache
|
|
||||||
|
|
||||||
# Sveltekit cache directory
|
|
||||||
.svelte-kit/
|
|
||||||
|
|
||||||
# vitepress build output
|
|
||||||
**/.vitepress/dist
|
|
||||||
|
|
||||||
# vitepress cache directory
|
|
||||||
**/.vitepress/cache
|
|
||||||
|
|
||||||
# Docusaurus cache and generated files
|
|
||||||
.docusaurus
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
|
|
||||||
# Firebase cache directory
|
|
||||||
.firebase/
|
|
||||||
|
|
||||||
# TernJS port file
|
|
||||||
.tern-port
|
|
||||||
|
|
||||||
# Stores VSCode versions used for testing VSCode extensions
|
# Stores VSCode versions used for testing VSCode extensions
|
||||||
.vscode-test
|
.vscode-test
|
||||||
@@ -283,6 +222,21 @@ dist
|
|||||||
!.yarn/sdks
|
!.yarn/sdks
|
||||||
!.yarn/versions
|
!.yarn/versions
|
||||||
|
|
||||||
# Vite logs files
|
### Server-specific
|
||||||
vite.config.js.timestamp-*
|
# Config
|
||||||
vite.config.ts.timestamp-*
|
server/config/*.yml
|
||||||
|
server/config/*.yaml
|
||||||
|
server/config/*.properties
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
server/test/
|
||||||
|
|
||||||
|
# frp config
|
||||||
|
frpc.toml
|
||||||
|
|
||||||
|
### Claude Code
|
||||||
|
.claude/settings.local.json
|
||||||
|
.claude/memory/
|
||||||
|
.claude/plans/
|
||||||
|
.claude/worktrees/
|
||||||
|
.claude/scheduled_tasks.json
|
||||||
@@ -2,16 +2,25 @@
|
|||||||
|
|
||||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||||
|
|
||||||
## Coding Standards
|
## Monorepo Structure
|
||||||
|
|
||||||
|
- `server/` — Java 21 + Spring Boot 3.5 + Gradle (Kotlin DSL) REST API backend
|
||||||
|
- `web/` — React 19 + Vite 8 + TypeScript + Ant Design 6 + Tailwind CSS 4 frontend
|
||||||
|
|
||||||
|
## Server
|
||||||
|
|
||||||
|
### Coding Standards
|
||||||
|
|
||||||
- **Style**: Follow the Google Java Coding Style as the foundation.
|
- **Style**: Follow the Google Java Coding Style as the foundation.
|
||||||
- **Indentation**: Use 4 spaces — no tabs.
|
- **Indentation**: Use 4 spaces — no tabs.
|
||||||
- **Line length**: Maximum 100 characters per line.
|
- **Line length**: Maximum 100 characters per line.
|
||||||
- **Comments**: All code comments must use British English spelling (e.g. "colour" not "color", "behaviour" not "behavior", "serialise" not "serialize", "analyse" not "analyze", "traveller" not "traveler").
|
- **Comments**: All code comments must use British English spelling (e.g. "colour" not "color", "behaviour" not "behavior", "serialise" not "serialize", "analyse" not "analyze", "traveller" not "traveler").
|
||||||
|
|
||||||
## Build & Test Commands
|
### Build & Test Commands
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
cd server
|
||||||
|
|
||||||
# Build the project (skip tests)
|
# Build the project (skip tests)
|
||||||
./gradlew build -x test
|
./gradlew build -x test
|
||||||
|
|
||||||
@@ -19,10 +28,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||||||
./gradlew test
|
./gradlew test
|
||||||
|
|
||||||
# Run a single test class
|
# Run a single test class
|
||||||
./gradlew test --tests "com.onixbyte.deltaforceguide.service.PasswordEncoderTest"
|
./gradlew test --tests "com.onixbyte.ahsarahguide.service.PasswordEncoderTest"
|
||||||
|
|
||||||
# Run a specific test method
|
|
||||||
./gradlew test --tests "com.onixbyte.deltaforceguide.service.PasswordEncoderTest.generatePassword"
|
|
||||||
|
|
||||||
# Build the full JAR
|
# Build the full JAR
|
||||||
./gradlew bootJar
|
./gradlew bootJar
|
||||||
@@ -30,14 +36,14 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
|||||||
|
|
||||||
The project uses Gradle with Java 21 (Amazon Corretto). Tests use JUnit 5 with the Spring Boot test framework, H2 in-memory database for test runtime, and Spring Security test support. Tests require an active `dev` profile.
|
The project uses Gradle with Java 21 (Amazon Corretto). Tests use JUnit 5 with the Spring Boot test framework, H2 in-memory database for test runtime, and Spring Security test support. Tests require an active `dev` profile.
|
||||||
|
|
||||||
## Code Architecture
|
### Code Architecture
|
||||||
|
|
||||||
**Delta Force Guide Server** — A REST API backend for managing Delta Force game firearm builds/modifications.
|
**Ahsarah Guide Server** — A REST API backend for managing firearm builds/modifications.
|
||||||
|
|
||||||
### Package structure
|
### Package structure
|
||||||
|
|
||||||
```
|
```
|
||||||
com.onixbyte.deltaforceguide
|
com.onixbyte.ahsarahguide
|
||||||
├── client/ # External service clients (TokenClient for JWT)
|
├── client/ # External service clients (TokenClient for JWT)
|
||||||
├── config/ # Spring beans: Security, CORS, Cache/Redis, Jackson, MyBatis, Spring Data
|
├── config/ # Spring beans: Security, CORS, Cache/Redis, Jackson, MyBatis, Spring Data
|
||||||
├── controller/ # REST controllers (Firearm, Modification, Tag, Auth)
|
├── controller/ # REST controllers (Firearm, Modification, Tag, Auth)
|
||||||
@@ -65,16 +71,9 @@ com.onixbyte.deltaforceguide
|
|||||||
- **JPA + native queries**: Most CRUD uses Spring Data JPA. Native queries (in `ModificationRepository`) handle JSONB tag filtering with Postgres `@>` operator.
|
- **JPA + native queries**: Most CRUD uses Spring Data JPA. Native queries (in `ModificationRepository`) handle JSONB tag filtering with Postgres `@>` operator.
|
||||||
- **Custom auth flow**: JWT tokens in httpOnly cookies (`AccessToken`). Spring Security with a custom `UsernamePasswordAuthenticationProvider` and `TokenAuthenticationFilter`. Tokens are auto-renewed within 5 min of expiry.
|
- **Custom auth flow**: JWT tokens in httpOnly cookies (`AccessToken`). Spring Security with a custom `UsernamePasswordAuthenticationProvider` and `TokenAuthenticationFilter`. Tokens are auto-renewed within 5 min of expiry.
|
||||||
- **JSONB storage**: `Modification.tags` and `Modification.accessories` (including nested `Tuning` objects) are stored as JSONB columns using Hypersistence Utils `JsonType`.
|
- **JSONB storage**: `Modification.tags` and `Modification.accessories` (including nested `Tuning` objects) are stored as JSONB columns using Hypersistence Utils `JsonType`.
|
||||||
- **Strict layering**: The call chain must follow `Controller → Service → Manager → Repository/Mapper`. Skipping layers (e.g. Controller calling Manager directly, Service calling Repository directly) is not permitted. Each layer has a distinct responsibility: Controller handles HTTP concerns, Service contains business logic, Manager manages `@Transactional` boundaries and data access coordination, Repository/Mapper handles raw data access.
|
- **Strict layering**: The call chain must follow `Controller → Service → Manager → Repository/Mapper`. Skipping layers (e.g. Controller calling Manager directly, Service calling Repository directly) is not permitted.
|
||||||
- **DTOs as Java records**: All request/response objects are immutable records with static `from()` factory methods for entity→DTO conversion.
|
- **DTOs as Java records**: All request/response objects are immutable records with static `from()` factory methods for entity→DTO conversion.
|
||||||
- **Flyway migrations**: SQL migrations in `src/main/resources/db/migration/` — V2 (init), V3 (bullet/damage fields), V4 (user), V5 (accessories JSONB column).
|
- **Flyway migrations**: SQL migrations in `src/main/resources/db/migration/`.
|
||||||
|
|
||||||
### Data model
|
|
||||||
|
|
||||||
- `firearm` table: id, name, type (int→FirearmType enum), level, calibre, fire_rate, armour_damage, body_damage, review
|
|
||||||
- `modification` table: id, firearm_id (FK→firearm), name, code, tags (jsonb), accessories (jsonb), note, author, video_url
|
|
||||||
- `app_user` table: id, username, email
|
|
||||||
- `user_credential` table: user_id, provider, credential (hashed)
|
|
||||||
|
|
||||||
### API endpoints
|
### API endpoints
|
||||||
|
|
||||||
@@ -94,16 +93,61 @@ com.onixbyte.deltaforceguide
|
|||||||
|
|
||||||
Conventional commits: `feat:`, `chore:`, `fix:`. Messages are in English, present tense imperative style.
|
Conventional commits: `feat:`, `chore:`, `fix:`. Messages are in English, present tense imperative style.
|
||||||
|
|
||||||
### External dependencies
|
---
|
||||||
|
|
||||||
- **DB**: PostgreSQL (via Flyway migrations), H2 in test
|
## Web
|
||||||
- **Cache**: Redis (via Spring Cache + RedisTemplate with GenericJackson2JsonRedisSerializer)
|
|
||||||
- **Auth**: java-jwt (auth0), BCrypt
|
|
||||||
- **Docs**: springdoc-openapi (Swagger UI) on dev profile
|
|
||||||
- **Onixbyte internal libs**: version-catalogue, tuple, common-toolbox, math-toolbox, identity-generator, captcha, regions
|
|
||||||
- **AWS**: S3 SDK
|
|
||||||
|
|
||||||
### Profiles
|
### Commands
|
||||||
|
|
||||||
- `dev`: Enables Swagger UI, connects to dev DB/Redis at `dfguide.onixbyte.cn`. Config in `config/application-dev.yaml`.
|
```bash
|
||||||
- Default profile: Used for production, no Swagger, connects to production datasource.
|
cd web
|
||||||
|
|
||||||
|
pnpm install # Install dependencies (pnpm required)
|
||||||
|
pnpm dev # Start Vite dev server
|
||||||
|
pnpm build # TypeScript check + Vite production build
|
||||||
|
pnpm build:tar # Build + tar.gz archive (used by CI)
|
||||||
|
pnpm preview # Preview production build locally
|
||||||
|
pnpm lint # ESLint
|
||||||
|
```
|
||||||
|
|
||||||
|
No test suite exists in this project.
|
||||||
|
|
||||||
|
### Architecture
|
||||||
|
|
||||||
|
Chinese-language SPA for browsing and managing Ahsarah Guide (阿萨拉向导). The frontend talks to the Spring Boot backend via REST APIs.
|
||||||
|
|
||||||
|
**App shell** (`src/main.tsx`): React 19 + React Router 7 + Redux Toolkit + Ant Design 6 + Tailwind CSS 4. Wraps the router in Redux `Provider` → `PersistGate` (Redux Persist) → Ant Design `StyleProvider`/`ConfigProvider` (locale `zh_CN`).
|
||||||
|
|
||||||
|
**Routing** (`src/router/index.tsx`): Two layout groups:
|
||||||
|
- `HeroLayout` (nav header + footer) for `/`, `/firearms`, `/mod-codes`
|
||||||
|
- `EmptyLayout` (minimal) for `/login`
|
||||||
|
All page components are lazy-loaded via `createBrowserRouter` + `lazy()`.
|
||||||
|
|
||||||
|
**State** (`src/store/`): Redux Toolkit with two slices — `auth` (current user) and `firearms` (paginated firearm list). State is persisted to `localStorage` or `sessionStorage` based on the `VITE_REDUX_STORAGE` env var. Use typed hooks from `src/hooks/store.ts` (`useAppDispatch`, `useAppSelector`).
|
||||||
|
|
||||||
|
**API layer** (`src/api/`): Axios instance (`src/shared/web-client/`) with base URL from `VITE_API_BASE_URL`, 10s timeout, and credentials. API modules: `FirearmApi`, `ModificationApi`, `TagApi`, `AuthApi`.
|
||||||
|
|
||||||
|
**Pages**:
|
||||||
|
- `FirearmsPage` — paginated card grid with type filter, create/edit modals (admin-only), delete with popconfirm
|
||||||
|
- `ModCodesPage` — paginated list with tag multi-select and firearmId query param filter, create/edit modals with nested accessory/tuning form lists
|
||||||
|
- `LoginPage` — simple username/password form, dispatches `setCurrentUser` on success
|
||||||
|
|
||||||
|
**Shared form components**: `FirearmForm` and `ModificationForm` are reused by both create and edit modals. `ModificationForm` fetches all firearms for its weapon selector and supports a `lockFirearmId` prop that disables the selector (used when navigating from a specific firearm).
|
||||||
|
|
||||||
|
**Type system** (`src/types/`): `Firearm` with weapon stats, `Modification` with nested `Accessory[]` → `Tuning[]`, `Page<T>` for paginated API responses, `User` for auth.
|
||||||
|
|
||||||
|
**Vite config**: Alias `@` → `./src`. Plugins: React, Tailwind CSS 4, port checker. Build uses rolldown with manual chunk splitting for React, Redux, Ant Design, React Router, and rc-* packages.
|
||||||
|
|
||||||
|
**Styling**: Tailwind CSS 4 with CSS layers (`theme, base, antd, components, utilities`). Responsive grid for mod code cards (1→2→3→4 columns). Prettier: 100 print width, no semicolons, double quotes, trailing commas ES5.
|
||||||
|
|
||||||
|
### Environment variables
|
||||||
|
|
||||||
|
```
|
||||||
|
VITE_API_BASE_URL=/api # Backend API base URL
|
||||||
|
VITE_REDUX_STORAGE=local # "local" or "session" for Redux persistence
|
||||||
|
```
|
||||||
|
|
||||||
|
### Contributing conventions
|
||||||
|
|
||||||
|
- User-facing copy, documentation, and code comments in British English
|
||||||
|
- Commit messages use `chore:` prefix for dependency updates (per Dependabot config)
|
||||||
File renamed without changes.
@@ -0,0 +1,38 @@
|
|||||||
|
# Ahsarah Guide (阿萨拉向导)
|
||||||
|
|
||||||
|
Ahsarah Guide is a full-stack web application for browsing and managing firearm modification guides.
|
||||||
|
|
||||||
|
## Monorepo Structure
|
||||||
|
|
||||||
|
| Directory | Stack | Description |
|
||||||
|
|-----------|-------|-------------|
|
||||||
|
| `server/` | Java 21 + Spring Boot 3.5 + Gradle | REST API backend |
|
||||||
|
| `web/` | React 19 + Vite 8 + TypeScript + Ant Design 6 | Web frontend |
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
### Server
|
||||||
|
|
||||||
|
Prerequisites: JDK 21 (Amazon Corretto), PostgreSQL, Redis
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd server
|
||||||
|
cp config/application-prod.yaml.example config/application-dev.yaml
|
||||||
|
# Edit config/application-dev.yaml with your database and Redis credentials
|
||||||
|
./gradlew bootJar
|
||||||
|
java -jar build/libs/ahsarah-guide-server-*.jar
|
||||||
|
```
|
||||||
|
|
||||||
|
### Web
|
||||||
|
|
||||||
|
Prerequisites: Node.js 20+, pnpm
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd web
|
||||||
|
pnpm install
|
||||||
|
pnpm dev
|
||||||
|
```
|
||||||
|
|
||||||
|
## Licence
|
||||||
|
|
||||||
|
MIT. See [LICENCE](LICENCE) for details.
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
### macOS
|
|
||||||
# General
|
|
||||||
.DS_Store
|
|
||||||
.AppleDouble
|
|
||||||
.LSOverride
|
|
||||||
|
|
||||||
# Thumbnails
|
|
||||||
._*
|
|
||||||
|
|
||||||
# Files that might appear in the root of a volume
|
|
||||||
.DocumentRevisions-V100
|
|
||||||
.fseventsd
|
|
||||||
.Spotlight-V100
|
|
||||||
.TemporaryItems
|
|
||||||
.Trashes
|
|
||||||
.VolumeIcon.icns
|
|
||||||
.com.apple.timemachine.donotpresent
|
|
||||||
|
|
||||||
# Directories potentially created on remote AFP share
|
|
||||||
.AppleDB
|
|
||||||
.AppleDesktop
|
|
||||||
Network Trash Folder
|
|
||||||
Temporary Items
|
|
||||||
.apdisk
|
|
||||||
|
|
||||||
### Linux
|
|
||||||
*~
|
|
||||||
|
|
||||||
# temporary files which can be created if a process still has a handle open of a deleted file
|
|
||||||
.fuse_hidden*
|
|
||||||
|
|
||||||
# Metadata left by Dolphin file manager, which comes with KDE Plasma
|
|
||||||
.directory
|
|
||||||
|
|
||||||
# Linux trash folder which might appear on any partition or disk
|
|
||||||
.Trash-*
|
|
||||||
|
|
||||||
# .nfs files are created when an open file is removed but is still being accessed
|
|
||||||
.nfs*
|
|
||||||
|
|
||||||
# Log files created by default by the nohup command
|
|
||||||
nohup.out
|
|
||||||
|
|
||||||
### Windows
|
|
||||||
|
|
||||||
# Windows thumbnail cache files
|
|
||||||
Thumbs.db
|
|
||||||
Thumbs.db:encryptable
|
|
||||||
ehthumbs.db
|
|
||||||
ehthumbs_vista.db
|
|
||||||
|
|
||||||
# Dump file
|
|
||||||
*.stackdump
|
|
||||||
|
|
||||||
# Folder config file
|
|
||||||
[Dd]esktop.ini
|
|
||||||
|
|
||||||
# Recycle Bin used on file shares
|
|
||||||
$RECYCLE.BIN/
|
|
||||||
|
|
||||||
# Windows Installer files
|
|
||||||
*.cab
|
|
||||||
*.msi
|
|
||||||
*.msix
|
|
||||||
*.msm
|
|
||||||
*.msp
|
|
||||||
|
|
||||||
# Windows shortcuts
|
|
||||||
*.lnk
|
|
||||||
|
|
||||||
### JetBrains IDE
|
|
||||||
# Covers JetBrains IDEs: IntelliJ, GoLand, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
|
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
|
||||||
.idea
|
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
|
||||||
*.iml
|
|
||||||
*.ipr
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based HTTP Client
|
|
||||||
http-client.private.env.json
|
|
||||||
|
|
||||||
### Server
|
|
||||||
# Compiled class file
|
|
||||||
*.class
|
|
||||||
|
|
||||||
# Log file
|
|
||||||
*.log
|
|
||||||
|
|
||||||
# BlueJ files
|
|
||||||
*.ctxt
|
|
||||||
|
|
||||||
# Mobile Tools for Java (J2ME)
|
|
||||||
.mtj.tmp/
|
|
||||||
|
|
||||||
# Package Files #
|
|
||||||
*.war
|
|
||||||
*.nar
|
|
||||||
*.ear
|
|
||||||
*.zip
|
|
||||||
*.tar.gz
|
|
||||||
*.rar
|
|
||||||
*.jar
|
|
||||||
|
|
||||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
|
||||||
hs_err_pid*
|
|
||||||
replay_pid*
|
|
||||||
|
|
||||||
# Config
|
|
||||||
config/*.yml
|
|
||||||
config/*.yaml
|
|
||||||
config/*.properties
|
|
||||||
|
|
||||||
# Tests
|
|
||||||
test/
|
|
||||||
|
|
||||||
### Gradle
|
|
||||||
.gradle
|
|
||||||
**/build/
|
|
||||||
!**/src/**/build/
|
|
||||||
|
|
||||||
!gradle/
|
|
||||||
!gradle/wrapper
|
|
||||||
!gradle/wrapper/gradle-wrapper.jar
|
|
||||||
!gradle/wrapper/gradle-wrapper.properties
|
|
||||||
gradle-app.setting
|
|
||||||
.gradletasknamecache
|
|
||||||
|
|
||||||
### Claude Code
|
|
||||||
.claude/settings.local.json
|
|
||||||
.claude/memory/
|
|
||||||
.claude/plans/
|
|
||||||
.claude/worktrees/
|
|
||||||
.claude/scheduled_tasks.json
|
|
||||||
|
|
||||||
# Eclipse Gradle plugin generated files
|
|
||||||
# Eclipse Core
|
|
||||||
.project
|
|
||||||
# JDT-specific (Eclipse Java Development Tools)
|
|
||||||
.classpath
|
|
||||||
|
|
||||||
gradle.properties
|
|
||||||
|
|
||||||
# frp config
|
|
||||||
frpc.toml
|
|
||||||
+1
-1
@@ -6,5 +6,5 @@ RUN chmod +x ./gradlew && \
|
|||||||
|
|
||||||
FROM amazoncorretto:21-alpine AS runner
|
FROM amazoncorretto:21-alpine AS runner
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=builder /app/build/libs/delta-force-guide-server-1.0.0.jar app.jar
|
COPY --from=builder /app/build/libs/ahsarah-guide-server-*.jar app.jar
|
||||||
ENTRYPOINT ["java", "-jar", "app.jar"]
|
ENTRYPOINT ["java", "-jar", "app.jar"]
|
||||||
@@ -8,11 +8,11 @@ ARG BUILD_DATE
|
|||||||
|
|
||||||
COPY ${JAR_FILE} app.jar
|
COPY ${JAR_FILE} app.jar
|
||||||
|
|
||||||
LABEL org.opencontainers.image.title="delta-force-guide-server" \
|
LABEL org.opencontainers.image.title="ahsarah-guide-server" \
|
||||||
org.opencontainers.image.description="REST API backend for managing Delta Force game firearm builds and modifications" \
|
org.opencontainers.image.description="REST API backend for Ahsarah Guide" \
|
||||||
org.opencontainers.image.version="${IMAGE_VERSION}" \
|
org.opencontainers.image.version="${IMAGE_VERSION}" \
|
||||||
org.opencontainers.image.vendor="${IMAGE_VENDOR}" \
|
org.opencontainers.image.vendor="${IMAGE_VENDOR}" \
|
||||||
org.opencontainers.image.source="https://git.onixbyte.com/onixbyte/delta-force-guide-server" \
|
org.opencontainers.image.source="https://onixbyte.dev/onixbyte/ahsarah-guide" \
|
||||||
org.opencontainers.image.licenses="MIT" \
|
org.opencontainers.image.licenses="MIT" \
|
||||||
org.opencontainers.image.created="${BUILD_DATE}"
|
org.opencontainers.image.created="${BUILD_DATE}"
|
||||||
|
|
||||||
|
|||||||
@@ -1,150 +0,0 @@
|
|||||||
# Delta Force Guide Server
|
|
||||||
|
|
||||||
REST API backend for managing **Delta Force** game firearm builds and modifications. Provides endpoints to browse, create, and share weapon configurations including attachments, tuning setups, tags, and build reviews.
|
|
||||||
|
|
||||||
|
|
||||||
## Tech Stack
|
|
||||||
|
|
||||||
| Layer | Technology |
|
|
||||||
|-----------|------------------------------------------------------------|
|
|
||||||
| Language | Java 21 (Amazon Corretto) |
|
|
||||||
| Framework | Spring Boot 3.x (Web, Security, Data JPA, Cache, Actuator) |
|
|
||||||
| Build | Gradle (Kotlin DSL) |
|
|
||||||
| Database | PostgreSQL (Flyway migrations, JSONB columns) |
|
|
||||||
| Cache | Redis (2-hour TTL) |
|
|
||||||
| Auth | Custom JWT via httpOnly cookies + BCrypt |
|
|
||||||
| API Docs | springdoc-openapi (Swagger UI, dev profile only) |
|
|
||||||
| Container | Multi-stage Docker image (Amazon Corretto 21 → Alpine) |
|
|
||||||
| CI/CD | GitHub Actions — builds on release publish |
|
|
||||||
|
|
||||||
|
|
||||||
## Quick Start
|
|
||||||
|
|
||||||
### Prerequisites
|
|
||||||
|
|
||||||
- JDK 21 (Amazon Corretto recommended)
|
|
||||||
- PostgreSQL
|
|
||||||
- Redis
|
|
||||||
|
|
||||||
### Configure
|
|
||||||
|
|
||||||
Copy and customise the development config:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cp config/application-prod.yaml.example \
|
|
||||||
config/application-dev.yaml
|
|
||||||
```
|
|
||||||
|
|
||||||
Fill in your datasource and Redis connection details, then place the production config at `config/`, then enable it by environment variable `SPRING_PROFILES_ACTIVE`.
|
|
||||||
|
|
||||||
### Build
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Compile (skip tests)
|
|
||||||
./gradlew build -x test
|
|
||||||
|
|
||||||
# Run all tests
|
|
||||||
./gradlew test
|
|
||||||
|
|
||||||
# Build executable JAR
|
|
||||||
./gradlew bootJar
|
|
||||||
```
|
|
||||||
|
|
||||||
### Run
|
|
||||||
|
|
||||||
```bash
|
|
||||||
SPRING_PROFILES_ACTIVE=prod java -jar build/libs/delta-force-guide-server-$version.jar
|
|
||||||
```
|
|
||||||
|
|
||||||
Swagger UI is available at `http://localhost:8080/swagger-ui.html` when the `dev` profile is active.
|
|
||||||
|
|
||||||
## Data Model
|
|
||||||
|
|
||||||
- **Firearm** — weapon base stats (name, type, level, calibre, fire rate, armour/body damage, review)
|
|
||||||
- **Modification** — a build attached to a firearm, with name, code, tags (JSONB), accessories including nested tuning objects (JSONB), author notes, and video links
|
|
||||||
- **App User** — registered user (username, email) with hashed credentials via BCrypt
|
|
||||||
|
|
||||||
Tags and accessories are stored as PostgreSQL JSONB columns using [Hypersistence Utils](https://github.com/vladmihalcea/hypersistence-utils), enabling flexible per-build metadata and filtering with the `@>` operator.
|
|
||||||
|
|
||||||
|
|
||||||
## Architecture
|
|
||||||
|
|
||||||
```
|
|
||||||
Controller → Service → Manager → Repository / Mapper
|
|
||||||
(HTTP) (logic) (@Transactional) (data access)
|
|
||||||
```
|
|
||||||
|
|
||||||
The call chain is strictly enforced — skipping layers is not permitted. All request/response objects are Java records with static `from()` factory methods for entity-to-DTO conversion.
|
|
||||||
|
|
||||||
|
|
||||||
## Docker
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Build image
|
|
||||||
docker pull registry.onixbyte.cn/onixbyte/delta-force-guide-server:latest
|
|
||||||
|
|
||||||
# Run container
|
|
||||||
docker run -p 8080:8080 \
|
|
||||||
-v /path/to/config:/app/config \
|
|
||||||
-e SPRING_PROFILES_ACTIVE=$your_active_profiles
|
|
||||||
delta-force-guide-server
|
|
||||||
```
|
|
||||||
|
|
||||||
Pre-built images are published to **Self-hosted GitLab Container Registry** (`registry.onixbyte.cn/onixbyte/delta-force-guide-server`) on every release.
|
|
||||||
|
|
||||||
|
|
||||||
## CI/CD
|
|
||||||
|
|
||||||
GitLab CI triggers on **tags**. The pipeline:
|
|
||||||
|
|
||||||
1. Builds the boot JAR with the release tag as the version
|
|
||||||
2. Uploads the JAR as a release asset
|
|
||||||
3. Builds and pushes a multi-arch Docker image to GHCR tagged with both `:latest` and `:<version>`
|
|
||||||
|
|
||||||
No tests are run in CI by design — tests are expected to pass locally before a release is cut.
|
|
||||||
|
|
||||||
|
|
||||||
## Profiles
|
|
||||||
|
|
||||||
| Profile | Purpose |
|
|
||||||
|---------|-----------------------------------------------------------------------|
|
|
||||||
| `dev` | Enables Swagger UI, connects to dev DB/Redis at `dfguide.onixbyte.cn` |
|
|
||||||
| default | Production mode, no Swagger, uses production datasource |
|
|
||||||
|
|
||||||
|
|
||||||
## Project Structure
|
|
||||||
|
|
||||||
```
|
|
||||||
src/main/java/com/onixbyte/deltaforceguide/
|
|
||||||
├── client/ External service HTTP clients
|
|
||||||
├── config/ Spring bean definitions (Security, CORS, Cache, Jackson, MyBatis)
|
|
||||||
├── controller/ REST controllers
|
|
||||||
├── domain/
|
|
||||||
│ ├── converter/ JPA attribute converters
|
|
||||||
│ ├── dto/ Request/response records
|
|
||||||
│ └── entity/ JPA entities
|
|
||||||
├── enumeration/ Enums (FirearmType)
|
|
||||||
├── exception/ Custom BizException with HTTP status mapping
|
|
||||||
├── filter/ TokenAuthenticationFilter (JWT through OncePerRequestFilter)
|
|
||||||
├── manager/ @Transactional wrappers around repositories
|
|
||||||
├── mapper/ MyBatis mapper interfaces (reserved for future use)
|
|
||||||
├── properties/ @ConfigurationProperties records
|
|
||||||
├── repository/ Spring Data JPA repositories
|
|
||||||
├── security/
|
|
||||||
│ ├── authentication/ Custom UsernamePasswordAuthentication
|
|
||||||
│ └── provider/ UsernamePasswordAuthenticationProvider
|
|
||||||
├── service/ Business logic
|
|
||||||
├── shared/ Constants and utility classes
|
|
||||||
└── utils/ General-purpose helpers
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Versioning
|
|
||||||
|
|
||||||
The application exposes its version at `/versions` (GET).
|
|
||||||
|
|
||||||
|
|
||||||
## Licence
|
|
||||||
|
|
||||||
This project is licensed under the [MIT Licence](LICENCE). Copyright © 2026 OnixByte.
|
|
||||||
|
|
||||||
@@ -8,7 +8,7 @@ val artefactVersion: String by project
|
|||||||
val buildChannel: String by project
|
val buildChannel: String by project
|
||||||
val vendor: String by project
|
val vendor: String by project
|
||||||
|
|
||||||
group = "com.onixbyte.helix"
|
group = "com.onixbyte.ahsarahguide"
|
||||||
version = artefactVersion
|
version = artefactVersion
|
||||||
|
|
||||||
tasks.withType<JavaCompile> {
|
tasks.withType<JavaCompile> {
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ app:
|
|||||||
max-age: PT2H
|
max-age: PT2H
|
||||||
jwt:
|
jwt:
|
||||||
# Issuer identifier, domain name is recommended.
|
# Issuer identifier, domain name is recommended.
|
||||||
issuer: dfguide.local
|
issuer: ahsarah-guide.local
|
||||||
|
|
||||||
# Token signing secret, a 32-byte long or longer string is recommended.
|
# Token signing secret, a 32-byte long or longer string is recommended.
|
||||||
secret: qwertyuiopasdfghjklzxcvbnm123456
|
secret: qwertyuiopasdfghjklzxcvbnm123456
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ dependencyResolutionManagement {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.name = "delta-force-guide-server"
|
rootProject.name = "ahsarah-guide-server"
|
||||||
+4
-4
@@ -1,20 +1,20 @@
|
|||||||
package com.onixbyte.deltaforceguide;
|
package com.onixbyte.ahsarahguide;
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
import org.springframework.scheduling.annotation.EnableAsync;
|
import org.springframework.scheduling.annotation.EnableAsync;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entry point for the Delta Force Guide Server application.
|
* Entry point for the Ahsarah Guide Server application.
|
||||||
*
|
*
|
||||||
* @author zihluwang
|
* @author zihluwang
|
||||||
*/
|
*/
|
||||||
@EnableAsync
|
@EnableAsync
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class DeltaForceGuideApplication {
|
public class AhsarahGuideApplication {
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(DeltaForceGuideApplication.class, args);
|
SpringApplication.run(AhsarahGuideApplication.class, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.client;
|
package com.onixbyte.ahsarahguide.client;
|
||||||
|
|
||||||
import jakarta.mail.MessagingException;
|
import jakarta.mail.MessagingException;
|
||||||
import jakarta.mail.internet.InternetAddress;
|
import jakarta.mail.internet.InternetAddress;
|
||||||
+4
-4
@@ -1,12 +1,12 @@
|
|||||||
package com.onixbyte.deltaforceguide.client;
|
package com.onixbyte.ahsarahguide.client;
|
||||||
|
|
||||||
import com.auth0.jwt.JWT;
|
import com.auth0.jwt.JWT;
|
||||||
import com.auth0.jwt.JWTVerifier;
|
import com.auth0.jwt.JWTVerifier;
|
||||||
import com.auth0.jwt.algorithms.Algorithm;
|
import com.auth0.jwt.algorithms.Algorithm;
|
||||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.User;
|
import com.onixbyte.ahsarahguide.domain.entity.User;
|
||||||
import com.onixbyte.deltaforceguide.properties.TokenProperties;
|
import com.onixbyte.ahsarahguide.properties.TokenProperties;
|
||||||
import com.onixbyte.deltaforceguide.utils.DateTimeUtil;
|
import com.onixbyte.ahsarahguide.utils.DateTimeUtil;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
+5
-5
@@ -1,9 +1,9 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.interceptor.GitHubWebhookInterceptor;
|
import com.onixbyte.ahsarahguide.interceptor.GitHubWebhookInterceptor;
|
||||||
import com.onixbyte.deltaforceguide.interceptor.TrafficInterceptor;
|
import com.onixbyte.ahsarahguide.interceptor.TrafficInterceptor;
|
||||||
import com.onixbyte.deltaforceguide.properties.AppProperties;
|
import com.onixbyte.ahsarahguide.properties.AppProperties;
|
||||||
import com.onixbyte.deltaforceguide.security.resolver.CurrentUserArgumentResolver;
|
import com.onixbyte.ahsarahguide.security.resolver.CurrentUserArgumentResolver;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.shared.JacksonRedisSerialiser;
|
import com.onixbyte.ahsarahguide.shared.JacksonRedisSerialiser;
|
||||||
import org.springframework.cache.annotation.EnableCaching;
|
import org.springframework.cache.annotation.EnableCaching;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.properties.CorsProperties;
|
import com.onixbyte.ahsarahguide.properties.CorsProperties;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import com.onixbyte.captcha.text.TextProducer;
|
import com.onixbyte.captcha.text.TextProducer;
|
||||||
import com.onixbyte.captcha.text.impl.DefaultTextProducer;
|
import com.onixbyte.captcha.text.impl.DefaultTextProducer;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.filter.WebhookFilter;
|
import com.onixbyte.ahsarahguide.filter.WebhookFilter;
|
||||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
+2
-2
@@ -1,7 +1,7 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||||
import com.onixbyte.deltaforceguide.shared.JacksonModules;
|
import com.onixbyte.ahsarahguide.shared.JacksonModules;
|
||||||
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
|
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import org.mybatis.spring.annotation.MapperScan;
|
import org.mybatis.spring.annotation.MapperScan;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
@@ -9,7 +9,7 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
* @author zihluwang
|
* @author zihluwang
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@MapperScan(basePackages = {"com.onixbyte.deltaforceguide.mapper"})
|
@MapperScan(basePackages = {"com.onixbyte.ahsarahguide.mapper"})
|
||||||
public class MyBatisConfig {
|
public class MyBatisConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
|
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
|
||||||
import io.swagger.v3.oas.annotations.info.Contact;
|
import io.swagger.v3.oas.annotations.info.Contact;
|
||||||
@@ -8,8 +8,8 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
|
|
||||||
@OpenAPIDefinition(
|
@OpenAPIDefinition(
|
||||||
info = @Info(
|
info = @Info(
|
||||||
title = "Delta Force Guide Server",
|
title = "Ahsarah Guide Server",
|
||||||
description = "API for managing Delta Force game firearm builds",
|
description = "API for Ahsarah Guide",
|
||||||
version = "1.4.0",
|
version = "1.4.0",
|
||||||
contact = @Contact(
|
contact = @Contact(
|
||||||
name = "Zihlu Wang",
|
name = "Zihlu Wang",
|
||||||
@@ -17,7 +17,7 @@ import org.springframework.context.annotation.Configuration;
|
|||||||
),
|
),
|
||||||
license = @License(
|
license = @License(
|
||||||
name = "MIT",
|
name = "MIT",
|
||||||
url = "https://onixbyte.dev/onixbyte/delta-force-guide-server/raw/branch/main/LICENCE"
|
url = "https://onixbyte.dev/onixbyte/ahsarah-guide/raw/branch/main/LICENCE"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
+7
-7
@@ -1,14 +1,14 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import com.auth0.jwt.JWT;
|
import com.auth0.jwt.JWT;
|
||||||
import com.auth0.jwt.JWTVerifier;
|
import com.auth0.jwt.JWTVerifier;
|
||||||
import com.auth0.jwt.algorithms.Algorithm;
|
import com.auth0.jwt.algorithms.Algorithm;
|
||||||
import com.onixbyte.deltaforceguide.exeption.ForbiddenException;
|
import com.onixbyte.ahsarahguide.exeption.ForbiddenException;
|
||||||
import com.onixbyte.deltaforceguide.exeption.UnauthorisedException;
|
import com.onixbyte.ahsarahguide.exeption.UnauthorisedException;
|
||||||
import com.onixbyte.deltaforceguide.filter.TokenAuthenticationFilter;
|
import com.onixbyte.ahsarahguide.filter.TokenAuthenticationFilter;
|
||||||
import com.onixbyte.deltaforceguide.properties.CookieProperties;
|
import com.onixbyte.ahsarahguide.properties.CookieProperties;
|
||||||
import com.onixbyte.deltaforceguide.properties.TokenProperties;
|
import com.onixbyte.ahsarahguide.properties.TokenProperties;
|
||||||
import com.onixbyte.deltaforceguide.security.provider.UsernamePasswordAuthenticationProvider;
|
import com.onixbyte.ahsarahguide.security.provider.UsernamePasswordAuthenticationProvider;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
||||||
@@ -9,7 +9,7 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|||||||
* @author zihluwang
|
* @author zihluwang
|
||||||
*/
|
*/
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableJpaRepositories(basePackages = {"com.onixbyte.deltaforceguide.repository"})
|
@EnableJpaRepositories(basePackages = {"com.onixbyte.ahsarahguide.repository"})
|
||||||
public class SpringDataConfig {
|
public class SpringDataConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.config;
|
package com.onixbyte.ahsarahguide.config;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.properties.GitHubWebhookProperties;
|
import com.onixbyte.ahsarahguide.properties.GitHubWebhookProperties;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.ManageRoleRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.ManageRoleRequest;
|
||||||
import com.onixbyte.deltaforceguide.security.annotation.RequiresAuth;
|
import com.onixbyte.ahsarahguide.security.annotation.RequiresAuth;
|
||||||
import com.onixbyte.deltaforceguide.service.UserService;
|
import com.onixbyte.ahsarahguide.service.UserService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.*;
|
import com.onixbyte.ahsarahguide.domain.dto.*;
|
||||||
import com.onixbyte.deltaforceguide.security.annotation.RequiresAuth;
|
import com.onixbyte.ahsarahguide.security.annotation.RequiresAuth;
|
||||||
import com.onixbyte.deltaforceguide.service.AuthService;
|
import com.onixbyte.ahsarahguide.service.AuthService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.DailyPasswordResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.DailyPasswordResponse;
|
||||||
import com.onixbyte.deltaforceguide.service.DailyPasswordService;
|
import com.onixbyte.ahsarahguide.service.DailyPasswordService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
+7
-7
@@ -1,11 +1,11 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.FirearmRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.FirearmRequest;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.FirearmResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.FirearmResponse;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.PageResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.PageResponse;
|
||||||
import com.onixbyte.deltaforceguide.enumeration.FirearmType;
|
import com.onixbyte.ahsarahguide.enumeration.FirearmType;
|
||||||
import com.onixbyte.deltaforceguide.security.annotation.RequiresAuth;
|
import com.onixbyte.ahsarahguide.security.annotation.RequiresAuth;
|
||||||
import com.onixbyte.deltaforceguide.service.FirearmService;
|
import com.onixbyte.ahsarahguide.service.FirearmService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.validation.constraints.Max;
|
import jakarta.validation.constraints.Max;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.ErrorResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.ErrorResponse;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.access.AccessDeniedException;
|
import org.springframework.security.access.AccessDeniedException;
|
||||||
+9
-9
@@ -1,13 +1,13 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.ModificationBatchCreateRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.ModificationBatchCreateRequest;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.ModificationRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.ModificationRequest;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.ModificationResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.ModificationResponse;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.PageResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.PageResponse;
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.User;
|
import com.onixbyte.ahsarahguide.domain.entity.User;
|
||||||
import com.onixbyte.deltaforceguide.security.annotation.RequiresAuth;
|
import com.onixbyte.ahsarahguide.security.annotation.RequiresAuth;
|
||||||
import com.onixbyte.deltaforceguide.security.resolver.CurrentUser;
|
import com.onixbyte.ahsarahguide.security.resolver.CurrentUser;
|
||||||
import com.onixbyte.deltaforceguide.service.ModificationService;
|
import com.onixbyte.ahsarahguide.service.ModificationService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@@ -6,7 +6,7 @@ import org.springframework.web.bind.annotation.GetMapping;
|
|||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import com.onixbyte.deltaforceguide.service.ModificationService;
|
import com.onixbyte.ahsarahguide.service.ModificationService;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
+10
-10
@@ -1,14 +1,14 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.BuildSummaryResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.BuildSummaryResponse;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.ChangePasswordRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.ChangePasswordRequest;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.PageResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.PageResponse;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.UpdateProfileRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.UpdateProfileRequest;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.UserProfileResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.UserProfileResponse;
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.User;
|
import com.onixbyte.ahsarahguide.domain.entity.User;
|
||||||
import com.onixbyte.deltaforceguide.security.annotation.RequiresAuth;
|
import com.onixbyte.ahsarahguide.security.annotation.RequiresAuth;
|
||||||
import com.onixbyte.deltaforceguide.security.resolver.CurrentUser;
|
import com.onixbyte.ahsarahguide.security.resolver.CurrentUser;
|
||||||
import com.onixbyte.deltaforceguide.service.UserService;
|
import com.onixbyte.ahsarahguide.service.UserService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.service.AppService;
|
import com.onixbyte.ahsarahguide.service.AppService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
+4
-4
@@ -1,8 +1,8 @@
|
|||||||
package com.onixbyte.deltaforceguide.controller;
|
package com.onixbyte.ahsarahguide.controller;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.GitHubIssueRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.GitHubIssueRequest;
|
||||||
import com.onixbyte.deltaforceguide.service.WebhookService;
|
import com.onixbyte.ahsarahguide.service.WebhookService;
|
||||||
import com.onixbyte.deltaforceguide.shared.GitHubWebhookHeader;
|
import com.onixbyte.ahsarahguide.shared.GitHubWebhookHeader;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.converter;
|
package com.onixbyte.ahsarahguide.domain.converter;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.enumeration.FirearmType;
|
import com.onixbyte.ahsarahguide.enumeration.FirearmType;
|
||||||
import jakarta.persistence.AttributeConverter;
|
import jakarta.persistence.AttributeConverter;
|
||||||
import jakarta.persistence.Converter;
|
import jakarta.persistence.Converter;
|
||||||
|
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.converter;
|
package com.onixbyte.ahsarahguide.domain.converter;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.enumeration.ModificationStatus;
|
import com.onixbyte.ahsarahguide.enumeration.ModificationStatus;
|
||||||
import jakarta.persistence.AttributeConverter;
|
import jakarta.persistence.AttributeConverter;
|
||||||
import jakarta.persistence.Converter;
|
import jakarta.persistence.Converter;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.Accessory;
|
import com.onixbyte.ahsarahguide.domain.entity.Accessory;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.Pattern;
|
import jakarta.validation.constraints.Pattern;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DTO representing a single daily-generated password for a map.
|
* DTO representing a single daily-generated password for a map.
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DTO holding metadata about the daily password source and update tracking.
|
* DTO holding metadata about the daily password source and update tracking.
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Response DTO wrapping daily password data with metadata.
|
* Response DTO wrapping daily password data with metadata.
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
public record EmailVerificationCode(
|
public record EmailVerificationCode(
|
||||||
String username,
|
String username,
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard error response body returned on API failures.
|
* Standard error response body returned on API failures.
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.enumeration.FirearmType;
|
import com.onixbyte.ahsarahguide.enumeration.FirearmType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Request DTO for creating or updating a firearm.
|
* Request DTO for creating or updating a firearm.
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.Firearm;
|
import com.onixbyte.ahsarahguide.domain.entity.Firearm;
|
||||||
import com.onixbyte.deltaforceguide.enumeration.FirearmType;
|
import com.onixbyte.ahsarahguide.enumeration.FirearmType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Response DTO for a firearm record, including associated modifications.
|
* Response DTO for a firearm record, including associated modifications.
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.Positive;
|
import jakarta.validation.constraints.Positive;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.Valid;
|
import jakarta.validation.Valid;
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.Modification;
|
import com.onixbyte.ahsarahguide.domain.entity.Modification;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.Email;
|
import jakarta.validation.constraints.Email;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
public record SendVerificationCodeResponse(
|
public record SendVerificationCodeResponse(
|
||||||
String verificationCodeId
|
String verificationCodeId
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.constraints.NotBlank;
|
import jakarta.validation.constraints.NotBlank;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.Tuning;
|
import com.onixbyte.ahsarahguide.domain.entity.Tuning;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Response DTO for a tuning adjustment on an accessory.
|
* Response DTO for a tuning adjustment on an accessory.
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import jakarta.validation.constraints.Email;
|
import jakarta.validation.constraints.Email;
|
||||||
import jakarta.validation.constraints.Size;
|
import jakarta.validation.constraints.Size;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.User;
|
import com.onixbyte.ahsarahguide.domain.entity.User;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.dto;
|
package com.onixbyte.ahsarahguide.domain.dto;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.User;
|
import com.onixbyte.ahsarahguide.domain.entity.User;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.entity;
|
package com.onixbyte.ahsarahguide.domain.entity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.entity;
|
package com.onixbyte.ahsarahguide.domain.entity;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.converter.FirearmTypeConverter;
|
import com.onixbyte.ahsarahguide.domain.converter.FirearmTypeConverter;
|
||||||
import com.onixbyte.deltaforceguide.enumeration.FirearmType;
|
import com.onixbyte.ahsarahguide.enumeration.FirearmType;
|
||||||
import jakarta.persistence.CascadeType;
|
import jakarta.persistence.CascadeType;
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.Convert;
|
import jakarta.persistence.Convert;
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.entity;
|
package com.onixbyte.ahsarahguide.domain.entity;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.converter.ModificationStatusConverter;
|
import com.onixbyte.ahsarahguide.domain.converter.ModificationStatusConverter;
|
||||||
import com.onixbyte.deltaforceguide.enumeration.ModificationStatus;
|
import com.onixbyte.ahsarahguide.enumeration.ModificationStatus;
|
||||||
import io.hypersistence.utils.hibernate.type.json.JsonType;
|
import io.hypersistence.utils.hibernate.type.json.JsonType;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import org.hibernate.annotations.Type;
|
import org.hibernate.annotations.Type;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.entity;
|
package com.onixbyte.ahsarahguide.domain.entity;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.entity;
|
package com.onixbyte.ahsarahguide.domain.entity;
|
||||||
|
|
||||||
import jakarta.persistence.CascadeType;
|
import jakarta.persistence.CascadeType;
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.entity;
|
package com.onixbyte.ahsarahguide.domain.entity;
|
||||||
|
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.AttributeOverride;
|
import jakarta.persistence.AttributeOverride;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.entity;
|
package com.onixbyte.ahsarahguide.domain.entity;
|
||||||
|
|
||||||
import jakarta.persistence.Embeddable;
|
import jakarta.persistence.Embeddable;
|
||||||
|
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.domain.entity;
|
package com.onixbyte.ahsarahguide.domain.entity;
|
||||||
|
|
||||||
import jakarta.persistence.Column;
|
import jakarta.persistence.Column;
|
||||||
import jakarta.persistence.Entity;
|
import jakarta.persistence.Entity;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.enumeration;
|
package com.onixbyte.ahsarahguide.enumeration;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enumeration of firearm types in the Delta Force game.
|
* Enumeration of firearm types in the Delta Force game.
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.enumeration;
|
package com.onixbyte.ahsarahguide.enumeration;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.exeption;
|
package com.onixbyte.ahsarahguide.exeption;
|
||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.exeption;
|
package com.onixbyte.ahsarahguide.exeption;
|
||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.exeption;
|
package com.onixbyte.ahsarahguide.exeption;
|
||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.exeption;
|
package com.onixbyte.ahsarahguide.exeption;
|
||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.exeption;
|
package com.onixbyte.ahsarahguide.exeption;
|
||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.exeption;
|
package com.onixbyte.ahsarahguide.exeption;
|
||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.web.server.ResponseStatusException;
|
import org.springframework.web.server.ResponseStatusException;
|
||||||
+7
-7
@@ -1,12 +1,12 @@
|
|||||||
package com.onixbyte.deltaforceguide.filter;
|
package com.onixbyte.ahsarahguide.filter;
|
||||||
|
|
||||||
import com.auth0.jwt.exceptions.JWTVerificationException;
|
import com.auth0.jwt.exceptions.JWTVerificationException;
|
||||||
import com.onixbyte.deltaforceguide.client.TokenClient;
|
import com.onixbyte.ahsarahguide.client.TokenClient;
|
||||||
import com.onixbyte.deltaforceguide.exeption.UnauthorisedException;
|
import com.onixbyte.ahsarahguide.exeption.UnauthorisedException;
|
||||||
import com.onixbyte.deltaforceguide.manager.CookieManager;
|
import com.onixbyte.ahsarahguide.manager.CookieManager;
|
||||||
import com.onixbyte.deltaforceguide.manager.UserManager;
|
import com.onixbyte.ahsarahguide.manager.UserManager;
|
||||||
import com.onixbyte.deltaforceguide.manager.UserRoleManager;
|
import com.onixbyte.ahsarahguide.manager.UserRoleManager;
|
||||||
import com.onixbyte.deltaforceguide.security.authentication.UsernamePasswordAuthentication;
|
import com.onixbyte.ahsarahguide.security.authentication.UsernamePasswordAuthentication;
|
||||||
import jakarta.servlet.FilterChain;
|
import jakarta.servlet.FilterChain;
|
||||||
import jakarta.servlet.ServletException;
|
import jakarta.servlet.ServletException;
|
||||||
import jakarta.servlet.http.Cookie;
|
import jakarta.servlet.http.Cookie;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.filter;
|
package com.onixbyte.ahsarahguide.filter;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.wrapper.RepeatedlyReadRequestWrapper;
|
import com.onixbyte.ahsarahguide.wrapper.RepeatedlyReadRequestWrapper;
|
||||||
import jakarta.servlet.*;
|
import jakarta.servlet.*;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
+6
-6
@@ -1,11 +1,11 @@
|
|||||||
package com.onixbyte.deltaforceguide.interceptor;
|
package com.onixbyte.ahsarahguide.interceptor;
|
||||||
|
|
||||||
import com.onixbyte.crypto.util.CryptoUtil;
|
import com.onixbyte.crypto.util.CryptoUtil;
|
||||||
import com.onixbyte.deltaforceguide.exeption.InternalServerErrorException;
|
import com.onixbyte.ahsarahguide.exeption.InternalServerErrorException;
|
||||||
import com.onixbyte.deltaforceguide.exeption.UnauthorisedException;
|
import com.onixbyte.ahsarahguide.exeption.UnauthorisedException;
|
||||||
import com.onixbyte.deltaforceguide.manager.WebhookManager;
|
import com.onixbyte.ahsarahguide.manager.WebhookManager;
|
||||||
import com.onixbyte.deltaforceguide.shared.GitHubWebhookHeader;
|
import com.onixbyte.ahsarahguide.shared.GitHubWebhookHeader;
|
||||||
import com.onixbyte.deltaforceguide.wrapper.RepeatedlyReadRequestWrapper;
|
import com.onixbyte.ahsarahguide.wrapper.RepeatedlyReadRequestWrapper;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import org.jspecify.annotations.NonNull;
|
import org.jspecify.annotations.NonNull;
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package com.onixbyte.deltaforceguide.interceptor;
|
package com.onixbyte.ahsarahguide.interceptor;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.manager;
|
package com.onixbyte.ahsarahguide.manager;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.properties.AppProperties;
|
import com.onixbyte.ahsarahguide.properties.AppProperties;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.manager;
|
package com.onixbyte.ahsarahguide.manager;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.properties.CookieProperties;
|
import com.onixbyte.ahsarahguide.properties.CookieProperties;
|
||||||
import org.springframework.boot.web.server.Cookie;
|
import org.springframework.boot.web.server.Cookie;
|
||||||
import org.springframework.http.ResponseCookie;
|
import org.springframework.http.ResponseCookie;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
+4
-4
@@ -1,11 +1,11 @@
|
|||||||
package com.onixbyte.deltaforceguide.manager;
|
package com.onixbyte.ahsarahguide.manager;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.DeserializationFeature;
|
import com.fasterxml.jackson.databind.DeserializationFeature;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.DailyPasswordResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.DailyPasswordResponse;
|
||||||
import com.onixbyte.deltaforceguide.exeption.InternalServerErrorException;
|
import com.onixbyte.ahsarahguide.exeption.InternalServerErrorException;
|
||||||
import com.onixbyte.deltaforceguide.shared.JacksonModules;
|
import com.onixbyte.ahsarahguide.shared.JacksonModules;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
|
||||||
+12
-12
@@ -1,16 +1,16 @@
|
|||||||
package com.onixbyte.deltaforceguide.manager;
|
package com.onixbyte.ahsarahguide.manager;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.Accessory;
|
import com.onixbyte.ahsarahguide.domain.entity.Accessory;
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.Firearm;
|
import com.onixbyte.ahsarahguide.domain.entity.Firearm;
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.Modification;
|
import com.onixbyte.ahsarahguide.domain.entity.Modification;
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.Tuning;
|
import com.onixbyte.ahsarahguide.domain.entity.Tuning;
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.User;
|
import com.onixbyte.ahsarahguide.domain.entity.User;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.AccessoryRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.AccessoryRequest;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.ModificationRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.ModificationRequest;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.ModificationResponse;
|
import com.onixbyte.ahsarahguide.domain.dto.ModificationResponse;
|
||||||
import com.onixbyte.deltaforceguide.domain.dto.TuningRequest;
|
import com.onixbyte.ahsarahguide.domain.dto.TuningRequest;
|
||||||
import com.onixbyte.deltaforceguide.repository.FirearmRepository;
|
import com.onixbyte.ahsarahguide.repository.FirearmRepository;
|
||||||
import com.onixbyte.deltaforceguide.repository.ModificationRepository;
|
import com.onixbyte.ahsarahguide.repository.ModificationRepository;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.jpa.domain.Specification;
|
import org.springframework.data.jpa.domain.Specification;
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
package com.onixbyte.deltaforceguide.manager;
|
package com.onixbyte.ahsarahguide.manager;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.UserCredential;
|
import com.onixbyte.ahsarahguide.domain.entity.UserCredential;
|
||||||
import com.onixbyte.deltaforceguide.repository.UserCredentialRepository;
|
import com.onixbyte.ahsarahguide.repository.UserCredentialRepository;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
+5
-5
@@ -1,9 +1,9 @@
|
|||||||
package com.onixbyte.deltaforceguide.manager;
|
package com.onixbyte.ahsarahguide.manager;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.User;
|
import com.onixbyte.ahsarahguide.domain.entity.User;
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.UserRole;
|
import com.onixbyte.ahsarahguide.domain.entity.UserRole;
|
||||||
import com.onixbyte.deltaforceguide.repository.UserRepository;
|
import com.onixbyte.ahsarahguide.repository.UserRepository;
|
||||||
import com.onixbyte.deltaforceguide.repository.UserRoleRepository;
|
import com.onixbyte.ahsarahguide.repository.UserRoleRepository;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
package com.onixbyte.deltaforceguide.manager;
|
package com.onixbyte.ahsarahguide.manager;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.domain.entity.UserRole;
|
import com.onixbyte.ahsarahguide.domain.entity.UserRole;
|
||||||
import com.onixbyte.deltaforceguide.repository.UserRoleRepository;
|
import com.onixbyte.ahsarahguide.repository.UserRoleRepository;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
package com.onixbyte.deltaforceguide.manager;
|
package com.onixbyte.ahsarahguide.manager;
|
||||||
|
|
||||||
import com.onixbyte.deltaforceguide.properties.GitHubWebhookProperties;
|
import com.onixbyte.ahsarahguide.properties.GitHubWebhookProperties;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
Loaded 100 of 144 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user