fix: adding indexes to tables

This commit is contained in:
Paul Couture 2023-12-18 09:44:09 -06:00
parent d5c7e9e4f5
commit 7772be7dc5
10 changed files with 255 additions and 113 deletions

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('artworks', function (Blueprint $table) {
$table->index('podcast_id');
$table->index('artist_id');
$table->index('episode_id');
$table->index('legacy_id');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('artworks', function (Blueprint $table) {
$table->dropIndex('podcast_id');
$table->dropIndex('artist_id');
$table->dropIndex('episode_id');
$table->dropIndex('legacy_id');
});
}
};

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('artists', function (Blueprint $table) {
$table->index('user_id');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('artists', function (Blueprint $table) {
$table->dropIndex('user_id');
});
}
};

View File

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('podcasts', function (Blueprint $table) {
$table->index('published');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('podcasts', function (Blueprint $table) {
$table->dropIndex('published');
});
}
};

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('episodes', function (Blueprint $table) {
$table->index('podcast_id');
$table->index('artwork_id');
$table->index('episode_date');
$table->index('published');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('episodes', function (Blueprint $table) {
$table->dropIndex('podcast_id');
$table->dropIndex('artwork_id');
$table->dropIndex('episode_date');
$table->dropIndex('published');
});
}
};

View File

@ -18,3 +18,15 @@ img.avatar_img {
max-width: 100%; max-width: 100%;
height: auto; height: auto;
} }
label[for=avatar] {
img {
&:hover {
cursor:pointer;
}
}
}
input[name=avatar] {
&.sr-only {
display: none;
}
}

View File

@ -19,7 +19,7 @@
@endsection @endsection
@section('page-content') @section('page-content')
<section class="signup-wrapper signin-wrapper ptb-120"> <section class="ptb-120">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<!-- Page Heading --> <!-- Page Heading -->

View File

@ -1,3 +1,4 @@
@extends('layouts.master')
@section('additional_headers') @section('additional_headers')
@parent @parent
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.6.1/cropper.min.css" integrity="sha512-hvNR0F/e2J7zPPfLC9auFe3/SE0yG4aJCOd/qxew74NN7eyiSKjr7xJJMu1Jy2wf7FXITpWS1E/RY8yzuXN7VA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.6.1/cropper.min.css" integrity="sha512-hvNR0F/e2J7zPPfLC9auFe3/SE0yG4aJCOd/qxew74NN7eyiSKjr7xJJMu1Jy2wf7FXITpWS1E/RY8yzuXN7VA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
@ -6,29 +7,28 @@
@parent @parent
<script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.6.1/cropper.min.js" integrity="sha512-9KkIqdfN7ipEW6B6k+Aq20PV31bjODg4AA52W+tYtAE0jE0kMx49bjJ3FgvS56wzmyfMUHbQ4Km2b7l9+Y/+Eg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.6.1/cropper.min.js" integrity="sha512-9KkIqdfN7ipEW6B6k+Aq20PV31bjODg4AA52W+tYtAE0jE0kMx49bjJ3FgvS56wzmyfMUHbQ4Km2b7l9+Y/+Eg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
@endsection @endsection
@section('page-content')
<x-app-layout> <x-app-layout>
<x-slot name="header"> <x-slot name="header">
<h2 class=""> <h2 class="">
{{ __('Manage Account Credentials') }} {{ __('Manage Account Details') }}
</h2> </h2>
</x-slot> </x-slot>
<section class="signup-wrapper signin-wrapper ptb-4"> <section class="ptb-4">
<div class="container"> <div class="container">
<div class="row d-flex-row d-flex align-content-stretch flex-wrap mb-4"> <div class="row">
<div class="col-xl-5 col-lg-12 authbox"> <div class="col-xl-4 col-lg-12 mb-4">
@include('profile.partials.update-profile-information-form') @include('profile.partials.update-profile-information-form')
</div> </div>
<div class="col-xl-5 offset-xl-2 col-lg-12 authbox"> <div class="col-xl-4 col-lg-12 mb-4">
@include('profile.partials.update-password-form') @include('profile.partials.update-password-form')
</div> </div>
</div> <div class="col-xl-4 col-lg-12 mb-4">
<div class="row d-flex-row d-flex align-content-stretch flex-wrap mb-4">
<div class="col-xl-5 col-lg-12 authbox">
@include('profile.partials.update-avatar-form') @include('profile.partials.update-avatar-form')
</div> </div>
</div> </div>
</div> </div>
</section> </section>
</x-app-layout> </x-app-layout>
@endsection

View File

@ -1,15 +1,17 @@
<div class="row mt-4 gutter-2"> <div class="authbox">
<div class="col"> <div class="row mt-4 gutter-2">
<div class="signin-content"> <div class="col">
<div class="mb-6"> <div class="signin-content">
<h2 class="mb-2">{{ __('Update Your Artist Avatar') }}</h2> <div class="mb-6">
<p class="normal">{{ __('This avatar will be used on the artist gallery and artist profile page.') }}</p> <h2 class="mb-2">{{ __('Update Artist Avatar') }}</h2>
<p class="normal">{{ __('This avatar will be used on the artist gallery and artist profile page.') }}</p>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="row mt-0 gutter-2">
<div class="row mt-0 gutter-2"> <div class="col">
<div class="col"> <livewire:artist.avatar />
<livewire:artist.avatar /> </div>
</div> </div>
</div> </div>

View File

@ -1,50 +1,52 @@
<div class="row mt-4 gutter-2"> <div class="authbox">
<div class="col"> <div class="row mt-4 gutter-2">
<div class="signin-content"> <div class="col">
<div class="mb-6"> <div class="signin-content">
<h2 class="mb-2">{{ __('Update Password') }}</h2> <div class="mb-6">
<p class="normal">{{ __('Ensure your account is using a long, random password to stay secure.') }}</p> <h2 class="mb-2">{{ __('Update Password') }}</h2>
<p class="normal">{{ __('Ensure your account is using a long, random password to stay secure.') }}</p>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="row mt-0 gutter-2">
<div class="row mt-0 gutter-2"> <div class="col">
<div class="col"> <form method="post" action="{{ route('password.update') }}" class="mt-6 space-y-6">
<form method="post" action="{{ route('password.update') }}" class="mt-6 space-y-6"> @csrf
@csrf @method('put')
@method('put')
<div> <div>
<x-input-label for="current_password" :value="__('Current Password')" /> <x-input-label for="current_password" :value="__('Current Password')" />
<x-text-input id="current_password" name="current_password" type="password" class="mt-1 block w-full" autocomplete="current-password" /> <x-text-input id="current_password" name="current_password" type="password" class="mt-1 block w-full" autocomplete="current-password" />
<x-input-error :messages="$errors->updatePassword->get('current_password')" class="mt-2" /> <x-input-error :messages="$errors->updatePassword->get('current_password')" class="mt-2" />
</div> </div>
<div> <div>
<x-input-label for="password" :value="__('New Password')" /> <x-input-label for="password" :value="__('New Password')" />
<x-text-input id="password" name="password" type="password" class="mt-1 block w-full" autocomplete="new-password" /> <x-text-input id="password" name="password" type="password" class="mt-1 block w-full" autocomplete="new-password" />
<x-input-error :messages="$errors->updatePassword->get('password')" class="mt-2" /> <x-input-error :messages="$errors->updatePassword->get('password')" class="mt-2" />
</div> </div>
<div> <div>
<x-input-label for="password_confirmation" :value="__('Confirm Password')" /> <x-input-label for="password_confirmation" :value="__('Confirm Password')" />
<x-text-input id="password_confirmation" name="password_confirmation" type="password" class="mt-1 block w-full" autocomplete="new-password" /> <x-text-input id="password_confirmation" name="password_confirmation" type="password" class="mt-1 block w-full" autocomplete="new-password" />
<x-input-error :messages="$errors->updatePassword->get('password_confirmation')" class="mt-2" /> <x-input-error :messages="$errors->updatePassword->get('password_confirmation')" class="mt-2" />
</div> </div>
<div class="d-flex justify-content-end text-end mt-4 mb-4"> <div class="d-flex justify-content-end text-end mt-4 mb-4">
<x-primary-button class="ml-3 btn btn-gradient"><span>{{ __('Save') }}</span></x-primary-button> <x-primary-button class="ml-3 btn btn-gradient"><span>{{ __('Save') }}</span></x-primary-button>
@if (session('status') === 'password-updated') @if (session('status') === 'password-updated')
<p <p
x-data="{ show: true }" x-data="{ show: true }"
x-show="show" x-show="show"
x-transition x-transition
x-init="setTimeout(() => show = false, 2000)" x-init="setTimeout(() => show = false, 2000)"
class="text-sm text-gray-600 dark:text-gray-400" class="text-sm text-gray-600 dark:text-gray-400"
>{{ __('Saved.') }}</p> >{{ __('Saved.') }}</p>
@endif @endif
</div> </div>
</form> </form>
</div>
</div> </div>
</div> </div>

View File

@ -1,65 +1,67 @@
<div class="row mt-4 gutter-2"> <div class="authbox">
<div class="col"> <div class="row mt-4 gutter-2">
<div class="signin-content"> <div class="col">
<div class="mb-6"> <div class="signin-content">
<h2 class="mb-2">{{ __('Edit Login Information') }}</h2> <div class="mb-6">
<p class="normal">{{ __("Update your account's username and email address. Note, your username may not be the same as your public artist profile.") }}</p> <h2 class="mb-2">{{ __('Update Login') }}</h2>
<p class="normal">{{ __("Update your account's username and email address. Note, your username may not be the same as your public artist profile.") }}</p>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="row mt-0 gutter-2">
<div class="row mt-0 gutter-2"> <div class="col">
<div class="col"> <form id="send-verification" method="post" action="{{ route('verification.send') }}">
<form id="send-verification" method="post" action="{{ route('verification.send') }}"> @csrf
@csrf </form>
</form>
<form method="post" action="{{ route('profile.update') }}"> <form method="post" action="{{ route('profile.update') }}">
@csrf @csrf
@method('patch') @method('patch')
<div> <div>
<x-input-label for="name" :value="__('Name')" /> <x-input-label for="name" :value="__('Name')" />
<x-text-input id="name" name="name" type="text" class="mt-1 block w-full" :value="old('name', $user->name)" required autofocus autocomplete="name" /> <x-text-input id="name" name="name" type="text" class="mt-1 block w-full" :value="old('name', $user->name)" required autofocus autocomplete="name" />
<x-input-error class="mt-2" :messages="$errors->get('name')" /> <x-input-error class="mt-2" :messages="$errors->get('name')" />
</div> </div>
<div> <div>
<x-input-label for="email" :value="__('Email')" /> <x-input-label for="email" :value="__('Email')" />
<x-text-input id="email" name="email" type="email" class="mt-1 block w-full" :value="old('email', $user->email)" required autocomplete="username" /> <x-text-input id="email" name="email" type="email" class="mt-1 block w-full" :value="old('email', $user->email)" required autocomplete="username" />
<x-input-error class="mt-2" :messages="$errors->get('email')" /> <x-input-error class="mt-2" :messages="$errors->get('email')" />
@if ($user instanceof \Illuminate\Contracts\Auth\MustVerifyEmail && ! $user->hasVerifiedEmail()) @if ($user instanceof \Illuminate\Contracts\Auth\MustVerifyEmail && ! $user->hasVerifiedEmail())
<div> <div>
<p class="text-sm mt-2 text-gray-800 dark:text-gray-200"> <p class="text-sm mt-2 text-gray-800 dark:text-gray-200">
{{ __('Your email address is unverified.') }} {{ __('Your email address is unverified.') }}
<button form="send-verification" class="btn btn-small btn-gradient"> <button form="send-verification" class="btn btn-small btn-gradient">
<span>{{ __('Click here to re-send the verification email.') }}</span> <span>{{ __('Click here to re-send the verification email.') }}</span>
</button> </button>
</p>
@if (session('status') === 'verification-link-sent')
<p class="mt-2 font-medium text-sm text-green-600 dark:text-green-400">
{{ __('A new verification link has been sent to your email address.') }}
</p> </p>
@endif
</div>
@endif
</div>
<div class="d-flex justify-content-end mt-4 mb-4 text-end"> @if (session('status') === 'verification-link-sent')
<x-primary-button class="ml-3 btn btn-gradient"><span>{{ __('Update Login Information') }}</span></x-primary-button> <p class="mt-2 font-medium text-sm text-green-600 dark:text-green-400">
@if (session('status') === 'profile-updated') {{ __('A new verification link has been sent to your email address.') }}
<p </p>
x-data="{ show: true }" @endif
x-show="show" </div>
x-transition @endif
x-init="setTimeout(() => show = false, 2000)" </div>
class="text-sm text-gray-600 dark:text-gray-400"
>{{ __('Saved.') }}</p> <div class="d-flex justify-content-end mt-4 mb-4 text-end">
@endif <x-primary-button class="ml-3 btn btn-gradient"><span>{{ __('Update Login Information') }}</span></x-primary-button>
</div> @if (session('status') === 'profile-updated')
</form> <p
x-data="{ show: true }"
x-show="show"
x-transition
x-init="setTimeout(() => show = false, 2000)"
class="text-sm text-gray-600 dark:text-gray-400"
>{{ __('Saved.') }}</p>
@endif
</div>
</form>
</div>
</div> </div>
</div> </div>