Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
WilsonParker committed Aug 8, 2024
0 parents commit 0521b14
Show file tree
Hide file tree
Showing 434 changed files with 41,137 additions and 0 deletions.
1 change: 1 addition & 0 deletions .env.encrypted
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
eyJpdiI6IkNWTzE0VjlSVWV1Qmg3TWNkaUpGbXc9PSIsInZhbHVlIjoiVlVmT0Q2TkxoaG5wczBvSE96NExmVnIrbFdVaWx5WHVoRkJndCtycEY3bUhxQXhOcFhHNUZtaTNOU05rWjJiZGV1Q3kzTkd3Qk52UVhWaFdPY3ZmUExrb1pycWFESTBoOUR0enM4NHVvQWFWL3Z6S3ZJWHNvYkFadHNocWIyNDd6T05KY0w2cTRlb04ySUc1RXpySWhmVEdMNTc3SGZSVHNmR083blZPUkc1K3FSRm5WaVdZa1lRSUFWSUJqWGZDQzQrdVBnSHIwQ1dmN01jRkxxOTVURkFiWTVFWjZtYjNGSUVNN1hFMHNxZHYyaGVaaHk4bzl1UXZIMXkySlY3dm1aa3J2TmVsVVVBUXUzTnQvM0IvRnVOMTVadjZSTERRb0U2dSt4by9xUW13UGhqcEJ6YXphZW9JVUV4c3U4Q2tnVThBSjg4Y0NkbnZReHJ2Y2VYLzhCdWZOVDAwRGhuTEZyN3hQQXJTZGxnWExOd0pSOWlVUjJ3cXFScVV6RS8wdURuZzMzcVQ1OFQwM3JnV3dFcnVYc3A5dnB3NEtmS1pDdEpVMThoOVNsWVh5YjA3RGkrMDNJSjBsbGRZOWRFVk9wS0d5ei9JRlpNVUpqbkJpc3E3RmRSRndNT202NGdxQzdrRDdXRDliZ3RZaDBiWlphOWxGU0RHNFgzcy83ZHNua1NqUjdVUldFM3lwak03eXpYc3gzSHY0SXp1NStrM09wM1ZxVnRjakpBTW5Za1hPY05lS2ZDald5RXJmTEVLMTN5UHNBb250ai91bFl3bFowaE5oZkpvYWNnL1hBMFBYbTM2ZDgyQVlVWXF6dEI3U2xUaDhndkpOOVpzQk5Jd2NNN0ZHYTAwdER4bjFHNDFxbzdvUU9pMGE5NFFHQ2JrNlRYN3E3cGZwS3N1VEhWR3hZOWRkekRNZXBhNjVZZDJWckpRRFNJSUV2TUhDTU0rbGdGOUo4SVJYU1M2bGVFelFNMW1yeWE1R29rYlJwbi9aTDRzQ1hPWlVxak0xWmY5VG1NZ0Zrc3djL3A0bU9pQXNVOU4zVnVxWGVzYXNBbjVGZDBEQ1FRV2NuQkM4Y290aXl3MjJXODlSbTU0MUYxZVFiQTJoZFppb2VXSmFjRi9yYlFPZ1RCNGFaT3oyREt4UHVMUlRrK0drbjBvaVNCblNJZGlsSkdhSUp1OERTbWNsYUMvWVg0M1dPZWtERHhsc2NCUGtsYm4xQ2NBR0xqL1dFdktBaEU4YmdVTkVFNTlIdkwrcjFBeDN1Y1BNZ1p2eEpiN0hTKzVFNndUeHUyOUJydnFaMkZ4dHhwYm11aXpnbTIxa1ZIdkQ5Z3dmT3ZiVE1LZ1BEajU1L28zSGRDSEdIeXRZMFJvM2pORnlQVTZEZW1sMkplYkgxcHlGdDZsTTJjSXFvdHR4bkRWQWxrT3AxYjV0Q09IK2w3b29hdkhaSmkyQkQ1bEFYSzd3d3VDd21UVEY0SHcxNGdVRHU3VnlBelVGQmhGaEZhd1BYNVgzTDAxbmljSVBJK084NENxQzFUaXF5b0k2ektHZ1FWRVBRTTlMd0EzUHJUd2tHbHM5WmtBZnBSSEtIRFNGZ2VWMzdEQmV4R2Q2aXpTalNGNFFBcXB2S2w0V1dOem1DQW4rbXNBcm5lVnZRQ1JrZC9xSW1PZUZDWXFTZ2VCaGpjQVhoUzN1L0FSWXVYRW5GZU5jVTVZZHlXUFp5TmZxTnRvRXVZN0ExMG5XamZRa0NXREhGS1g2bEg3bG1UUmxaV3Rrd3lMb09tSTMzR2xyTUorbDRqZHJicXhrV3pYZm1mRW9pMVo3MGRyZ2ZOQmo1QjRsbVZyd0VYeVZHLys3UnA0b2hQUzY1UkRzaEJmT0h5SThwQVVWNkV5QlJWaFQ1TmRXQkNDWWhwVkZVMVNUZm9nTE9LbHJ6Q29saDRFSWR5L2JUUTR0ZGU5VHZiNFh0cTduZWFMZTlXNDIyK1R1OFplZHBvT1I1NzlzMGg2aHJVbng1VllORC9ISUF4Y2p5akZkWDhMV2RJM1Z2R0pGNXE5ckh3V3BuR0JFUjNDRmp3MmtMRjJmNjdicHJnSXBTWXZSNHFjMWtZeUlHZWZsWEZsVktnOWFDSi9hQUJGd3BtVC9ScWVVdmN4THRheDgrRzhQTm5BSFlDdlN3RHpaY2pmSUVqUXFaZ3cyYnE1OTR1c0U1OW9MTzJlMDB1Y2FwaEQxMys0cmhNUHIxcCtQSVRYM21ZTnlZQ0k1YVZndDVKaXB6T1orNjVBL2dYV2xFWVE2Q3FIYmJmR3ZQQ1NlYjB2Z003SW5uYzg5QTJyL05GblBmYzc0cTU5aS83bXJSTUhjcW1ubEJxa1l4RDBwOE5lUlR4elhIZTRoS3R0UHoyRHlJMS9Xc2lubkZTRDl1ZUlQeW9BTjNrZDMya3E4VEM2MU5ieHZOYlpLK0Q5NTBYSFlTZjNjZVFmeERyaUxkNXIyNkdMa29PYzM1THBZeis1NWh3Q3E5ZU5UZW1oTHR6OXEyMGtQLzhvTFZBRDdCMHFLSEp1U1crK29hVGRtRE1PS3UyU2NMb3Z0dWtjcW1XNEdXaTUzL0VSb2NFVFZqTkxZSHdsMTZwTmttaktvcHhDWWhNU2hNZ3FwcldlcVUyK3E4eUJ5M3p2dlpReUVwMkhHZVduT2IrOHRTVnRvVnk4VHgwWjJBQ09meDZ0OFBRL00ySFdvMWsxKzgxRk40eWZBdzFUbjVoeDNXSUhJVFhLWVdobEQ2VjJiMUFIMDBiWUp4UE96Y09LcjVRdkV4bEpFTEFDWno0aFVQRUFFWG0vYU9rWGtLWHZQZzVLQjFqVFQ3V3BEa0FqRTNMeFZaT2k4cmJYQ01FTWVOTk1ORDJmVnN0S1JxOTA5TzVsWFZLNzYvdEd0eUpqdWlrRmZGVnltb1lyNTFxVjVGQzdqQWk3UXVmb01qQ3laYmY5V05vdklmNnIxRjVFSzJMTnZJOURMZ3Rud2l3d1JWSlphWkpQQ3JvcWhpcDdaUGZBU2w3dzNJd0lEenlWcTBTbjU3Rzd3eXdEb0Rib3B6VUI3cjdRSUdDZHFQcHh0UEx3V1ZtMkIwbldsVkNPKzhTdFNmQzFxMFkzVnlVUHR3OGJteUUrRUpKZ25tbjBraURpV2lVa3RNdVFPWk4yZlJQTVQzRXZ0eEZ1OU5zODRSWldmNEt5UDh4RC9pRjZlaUFydGdHMVB4a2JXRDlsTmQwekU4UG9RQXRhT2FQbVV6ZWpIcWYyL2lLR25XL0IvVlBQUUppZVBTQnpYYzVPbDRLY2VhckQ1Y3hOdExqYWVuUVludzlkRFh3YmU5aXY1N3RXWWJvNkNCcEl1a01HbU9WczB3RDBmc0pMWVJOSEtRa3pWRzBaVmNDQzlNYktRa2pJVURjbDRhNDFiZHd3TWZGSzlFMDFZVnhWWElVSnR1OG9wTVR4S2R0RElWbk1uQlNtUDdTZzBZRDR5VFJpNEltTDdZb0Q0RkExYU5WOFNYUmdQb0NzSDA1SVZWNXNJYSthY09HV3ZCQjV6NnRmL1JpT2hJSVVrWUU5aVZ2WDlpOFdsQUZOcCtTOVhmWHd5eWQ2R2pKV2xDd1BPYzV6R25zNlpvZ1JLbjREL0JFWlI5WTNsRDNsS3NkY2ZNVDhLeWd3SWZlN1JMMTJkSnNiQ2RFdWVOb3llQ1pacWgvNldHd3ZZN2Jrb3o5aGl4Si9aS0RqMzNobEhSelgzRDNSay9aSS8vTjUvbnNYVS90cTNITzZSdXgvSlZvby91N3R6dkVyeHlQNllkUnVtekJEVXJvQjZxT2IyOVhpenNzUUNUMUVhbG42aFRtNUxmbm5zZHRpa2s1dThyVWxMaFJwTklmdW9tTHFsWk9pVjZOYTBEd3lkUmd4Tk4vQ3dFbXZwZ0ZNVnVtS0FwVGJKb3JEU1NwNy9GZWpnek4xcHBYRnpKWVZNU2hqdmNXM1VyVU9ScU1DckhNYUxKT2ljTmMyRmE0YkVoZTU5M080L0RHeTdaK2pYZ2hWNElMbnc0R2pLSi91cCtkSXdHak1FT0l0T2ZtSUVBeGcyMFI5b0NnZUFvRTJCYjRSNmloOC9UWktGZXpWa3ZQaTNvNXMvNm5LanRLWS85U2FBSHRDbURiT2RCd1NYajgwR3hZMUdrUHdiQUgyYTV6ZXowZHd4Yk5SbmorUVUyMzc3SmhocC9SOTFIem1QRnBVOTl1bUhjNnY1RkRPU05xMGlSOWJmaXREdkRWaG5DNnpaNFNRT1FIbCt4NzI4eStTWnZxdWRLallqRHk0b2lzQ0Q2ZWJEL3MzRHRaTjZGdy9NYllibzBrcjRlVFRxWlhpMjNpMFlKMllvcjJhVW9KZUxLMnpIL3MrZ2NHQzh2VTJtK0JNT1pYL1YwSklBVVlwU0pDSVZmUGpLTUExTWg5eGQ4K3RFNURVQ1RqYk9QQlhMREc4VVB0QUhMTEVCQlBmSGRUYjZGMlJCYkVpSkMyNGxvQ3p1cjhjM0FIOTN5alNCSHBqQzhKUXZTRHVoaEZhSFkxWEl1WTdtSzhqY2V0OHNrSGEyYkRReXNJdnJ4MUYvenFvRElYa0Rjd2dWZHZ4VlVZN01Bb3owLzJkeGVSNk5IVmI0YlRrVnNHMHZNcno3bHJuS3FYaytPUThjdFBIVWZZZGV6blR1bitqN0VqNEZxdGNhQXIwTUMvaFlMWXhIVXROTUZQOVRXYWFuTnNCM251WmpPRCtmcHEwdzlwUkFPWDk2ZDBUQ0FoNjVJbmJoOHI3M0VPb25qb0RDRWVkRzZnUng4Wm9aTGdablFWd2JTWlNjeUpabnlnWEhqamhhWG01NS9ZVEh6NlhVZDJrT0xDamJrUW5tTXlMMTQ2VHd5ZlFGRzVjRUZ1RGlCWVY2ZXI0cGlkRzV0bG0zWXltVXgyQ3BjZlQ3VU9vSHhvZkxXR21TVlNwQlA0U20xTzVOSTY4VWIrMjloS1RSZG1KdW90UG1YbmtpaC9PcGk4WDgvbUZDS3YwWmgzQXBJUjJNOGRjeG51VUlDRjdOM2VDY0FnNkJMVkdOS3k5NlJCWDI4UGhSaHJIcU95NmhneGp6c05OUGo0OXgyQWtTZXpQRHVyVFpNMzg2NnZLRk1xbytDNDJUa0tVVndJWDdBd20vcG5jOWlhU0ZkRC9CL2wzdjVPSUMyREpHM3pna0t3c28zVFNjTGM4WXFKZGRaRWc5Qk9SOXNnQUxTZ2xZMVhRMDNxd2ZrNmJ1NHhkUk9UQWFHbm11LzBxUzlZSVlhNC9JRVhaUnVIbzdyOEVGampsaW5zU2FnemdpU3dsc3B3UDVQLzAyUEMySk5rTERIV2lwZ2FPeFVIL1c0VkUvaE9JTmQzNi8xV1RFRE1nUkFBUEQ1TjFlMUQyZkxIQ0NWK3VnUnp1UTZiTDVuMVA1NjBuRkFyOTRwWVRDMFg3WE10MUtMalZZM2NRVGYydmpFbHgvYjNydkpNOTVpeGp4eFBQODREYjdDMG1uS0ZvWnkwYW5leHRTcWJVa3lZZzdQOXlQdDRaN2wrWVFMTisxaWFjTG1QY25abG1JaWF4S3JNQmZlVHducHFmaFRkSFErSlNLVmFSSkJOVERMMXdraW1LIiwibWFjIjoiZmM1ODc5ZTc1NmJjYmM2YjAwOGQzMzIzMThiNzQyZTlkMWU4Zjc4NDZmNjhmYTQwOTBlZGNlZTM4ZTUwYTdmMyIsInRhZyI6IiJ9
47 changes: 47 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Deploy

on:
push:
branches: [ master, development ]

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.2
tools: composer:v2
coverage: none
- name: Require Vapor CLI
run: composer global require laravel/vapor-cli
- name: Install Modules
run: |
git clone --branch $BRANCH https://$GH_TOKEN@github.com/WilsonParker/ai-generate-models.git app/Modules/Models
git clone --branch $BRANCH https://$GH_TOKEN@github.com/WilsonParker/ai-generate-services.git app/Modules/Services
env:
BRANCH: ${{ github.ref_name }}
GH_TOKEN: ${{ secrets.GH_TOKEN }}
MODELS_MODULE: ${{ secrets.MODELS_MODULE }}
SERVICES_MODULES: ${{ secrets.SERVICES_MODULES }}
- name: Install Project Dependencies
run: |
composer install --no-dev --optimize-autoloader --ignore-platform-req=*
env:
OAUTH_PUBLIC: ${{ secrets.OAUTH_PUBLIC }}
OAUTH_PRIVATE: ${{ secrets.OAUTH_PRIVATE }}
- name: Deploy Environment
run: |
if [[ $BRANCH_REF == 'refs/heads/master' ]]; then
vapor deploy production
elif [[ $BRANCH_REF == 'refs/heads/development' ]]; then
vapor deploy development
else
echo "${{ github.ref }} Branch is not supported."
fi
env:
BRANCH_REF: ${{ github.ref }}
VAPOR_API_TOKEN: ${{ secrets.VAPOR_API_TOKEN }}
29 changes: 29 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/.phpunit.cache
/node_modules
/public/build
/public/hot
/public/storage
/vendor
.env
.env.local
.env.development
.env.production
.env.backup
.env.staging
.phpunit.result.cache
Homestead.json
Homestead.yaml
auth.json
npm-debug.log
yarn-error.log
/.fleet
/.idea
/.vscode

# Project exclude paths
/bootstrap/cache/*
/storage/*.key
/storage
.vapor/

/public/sitemap.xml
6 changes: 6 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[submodule "app/Modules/Models"]
path = app/Modules/Models
url = https://github.com/WilsonParker/ai-generate-models
[submodule "app/Modules/Services"]
path = app/Modules/Services
url = https://github.com/WilsonParker/ai-generate-services
Binary file added .rnd
Binary file not shown.
58 changes: 58 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
FROM ubuntu:22.04

LABEL maintainer="Taylor Otwell"

ARG WWWGROUP
ARG NODE_VERSION=18
ARG POSTGRES_VERSION=15

WORKDIR /var/www/html

ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update \
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils \
&& curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \
&& echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
&& apt-get update \
&& apt-get install -y php8.2-cli php8.2-dev \
php8.2-pgsql php8.2-sqlite3 php8.2-gd php8.2-imagick \
php8.2-curl \
php8.2-imap php8.2-mysql php8.2-mbstring \
php8.2-xml php8.2-zip php8.2-bcmath php8.2-soap \
php8.2-intl php8.2-readline \
php8.2-ldap \
php8.2-msgpack php8.2-igbinary php8.2-redis php8.2-swoole \
php8.2-memcached php8.2-pcov php8.2-xdebug \
&& curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \
&& curl -sLS https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \
&& apt-get install -y nodejs \
&& npm install -g npm \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \
&& echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \
&& echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
&& apt-get update \
&& apt-get install -y yarn \
&& apt-get install -y mysql-client \
&& apt-get install -y postgresql-client-$POSTGRES_VERSION \
&& apt-get -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.2

RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail

COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY php.ini /etc/php/8.2/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container

EXPOSE 8000

ENTRYPOINT ["start-container"]
28 changes: 28 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<p align="center"><a href="https://laravel.com" target="_blank"><img src="https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg" width="400" alt="Laravel Logo"></a></p>

<p align="center">
<a href="https://github.com/laravel/framework/actions"><img src="https://github.com/laravel/framework/workflows/tests/badge.svg" alt="Build Status"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/dt/laravel/framework" alt="Total Downloads"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/v/laravel/framework" alt="Latest Stable Version"></a>
<a href="https://packagist.org/packages/laravel/framework"><img src="https://img.shields.io/packagist/l/laravel/framework" alt="License"></a>
</p>

## 설명

AI server 를 이용하여 image 를 생성할 수 있습니다\
text to image, image to image 등 다양한 기능을 제공합니다

## Relation

### Module

- [ai-generate-services](https://github.com/WilsonParker/ai-generate-services)
- [ai-generate-models](https://github.com/WilsonParker/ai-generate-models)

### Admin

- [ai-generate-admin](https://github.com/WilsonParker/ai-generate-admin)

### AI Server

- [ai-generate-server](https://github.com/WilsonParker/ai-generate-server)
31 changes: 31 additions & 0 deletions app/Console/Commands/BuildSiteMap.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?php

namespace App\Console\Commands;

use App\Services\SiteMap\Facades\SiteMapService;
use Illuminate\Console\Command;

class BuildSiteMap extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'app:build-sitemap';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Build site map and upload to s3';

/**
* Execute the console command.
*/
public function handle()
{
SiteMapService::generate();
}
}
52 changes: 52 additions & 0 deletions app/Console/Commands/Migrate/StockGenerate.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
<?php

namespace App\Console\Commands\Migrate;

use Illuminate\Console\Command;

class StockGenerate extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'migrate:stock-generate';

/**
* The console command description.
*
* @var string
*/
protected $description = 'Migrate stock generate';

/**
* Execute the console command.
*/
public function handle()
{
\App\Models\Stock\StockGenerate::with('images')->chunk(1000, function ($stockGenerates) {
$stockGenerates->each(function ($stockGenerate) {
$image = $stockGenerate->images->first();
$properties = $image->custom_properties ?? null;
if (!$properties) {
return;
}
if (isset($properties['denoisingStrength'])) {
$isPoseVariation = $properties['denoisingStrength'] == 1;
} else if (isset($properties['denoising_strength'])) {
$isPoseVariation = $properties['denoising_strength'] == 1;
} else {
$isPoseVariation = false;
}
$stockGenerate->update([
'gender' => $properties['gender'] ?? null,
'age' => empty($properties['age']) ? null : (int)$properties['age'],
'ethnicity' => $properties['ethnicity'] ?? null,
'is_skin_reality' => $properties['lora'] != null && $properties['lora'] != "",
'is_pose_variation' => $isPoseVariation,
]);
});
});
}
}
21 changes: 21 additions & 0 deletions app/Console/Commands/SearchTestCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace App\Console\Commands;

use App\Models\Stock\Stock;
use Illuminate\Console\Command;

class SearchTestCommand extends Command
{
protected $signature = 'search:test {keyword}';

protected $description = 'Command description';

public function handle(): void
{
$keyword = $this->argument('keyword');
dump($keyword);
$stocks = Stock::search($keyword)->paginate(10);
dump($stocks);
}
}
47 changes: 47 additions & 0 deletions app/Console/Commands/StockIndexCacheCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

namespace App\Console\Commands;

use AIGenerate\Services\Cache\Traits\CacheKeyTraits;
use AIGenerate\Services\Stock\Sorts\Enums\Sorts;
use AIGenerate\Services\Stock\Sorts\HottestSort;
use AIGenerate\Services\Stock\Sorts\NewestSort;
use AIGenerate\Services\Stock\Sorts\TopSort;
use AIGenerate\Services\Stock\StockService;
use App\Http\Repositories\Stock\StockFilterRepository;
use App\Http\Repositories\Stock\StockSimilarSearchRepository;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Cache;

class StockIndexCacheCommand extends Command
{
use CacheKeyTraits;

protected $signature = 'stock:index-cache';

protected $description = '메인 스톡 목록의 캐시를 재설정 합니다';

public function handle(): void
{
$service = new StockService(
app()->make(StockFilterRepository::class),
app()->make(StockSimilarSearchRepository::class),
new \AIGenerate\Services\Stock\Sorts\Sorts([
app()->make(HottestSort::class),
app()->make(TopSort::class),
app()->make(NewestSort::class),
]),
);
$sort = Sorts::TOP;
$per = 99;
for ($page = 1; $page <= 10; $page++) {
Cache::put($this->makeCacheKey([
'stock',
'index',
$sort->value,
$per,
$page,
]), $service->index(null, $sort, $page, null, null, $per), 60 * 60 * 1);
}
}
}
49 changes: 49 additions & 0 deletions app/Console/Commands/StockRandomGenerateCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php

namespace App\Console\Commands;

use App\Models\Stock\Stock;
use App\Models\User\User;
use Illuminate\Console\Command;
use AIGenerate\Models\Stock\Enums\Ethnicity;
use AIGenerate\Models\Stock\Enums\Gender;
use AIGenerate\Services\Stock\StockService;

class StockRandomGenerateCommand extends Command
{
protected $signature = 'stock:random-generate
{id : stock id}
{email : user email}
{--count=1 : generate count}
';

protected $description = 'Command description';

public function __construct(private StockService $service)
{
parent::__construct();
}

public function handle(): void
{
for ($i = 1; $i <= $this->option('count'); $i++) {
$stock = Stock::findOrFail($this->argument('id'));
$user = User::where('email', $this->argument('email'))->firstOrFail();

$ethnicity = collect(Ethnicity::cases())->random(1)->first();
$gender = collect(Gender::cases())->random(1)->first();
$age = rand(5, 95);
$isSkinReality = collect([true, false])->random(1)->first();
$isPoseVariation = collect([true, false])->random(1)->first();
$this->service->generate(
stock : $stock,
user : $user,
ethnicity : $ethnicity,
gender : $gender,
age : $age,
isSkinReality : $isSkinReality,
isPoseVariation: $isPoseVariation,
);
}
}
}
Loading

0 comments on commit 0521b14

Please sign in to comment.