Merge MVC rewrite into master (#21)

* Just commit it all

* Require auth

* crap

* Update homepage

* Block AI scrapers

* Update cache update script

* Add dummy file

* Remove unnecessary lastfm config var

* Use withQueryParameters for LastFM API

* Fix embeds

* Update example env

* Smard
This commit is contained in:
Frankie B 2024-06-11 18:02:01 +01:00 committed by GitHub
commit c9299b5410
88 changed files with 1982 additions and 1661 deletions

View file

@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\BookmarkCategory>
*/
class BookmarkCategoryFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'name' => $this->faker->word,
];
}
}

View file

@ -0,0 +1,27 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use App\Models\BookmarkCategory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\BookmarkSite>
*/
class BookmarkSiteFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
'name' => $this->faker->name,
'description' => $this->faker->sentence,
'url' => $this->faker->url,
'category' => BookmarkCategory::factory(),
];
}
}

View file

@ -1,29 +0,0 @@
<?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::create('guestbook__bans', function (Blueprint $table) {
$table->increments('id');
$table->string('ip_address', 40);
$table->string('reason', 50);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('guestbook__bans');
}
};

View file

@ -1,34 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
// Check if table exists and is empty
if (Schema::hasTable('bookmark__categories') && DB::table('bookmark__categories')->count() == 0) {
// Insert placeholder categories
DB::table('bookmark__categories')->insert([
['name' => 'Friends\' Websites', 'priority' => 1],
['name' => 'Cool Projects', 'priority' => 2],
['name' => 'Other Cool Sites', 'priority' => 3],
['name' => 'Miscellaneous Resources', 'priority' => 4]
]);
}
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
}
};

View file

@ -12,9 +12,9 @@
public function up(): void
{
Schema::create('bookmark__categories', function (Blueprint $table) {
$table->increments('id');
$table->id();
$table->string('name');
$table->float('priority');
$table->unsignedBigInteger('priority')->nullable();
$table->timestamps();
});
}

View file

@ -12,13 +12,15 @@
public function up(): void
{
Schema::create('bookmark__sites', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 50);
$table->string('description', 150);
$table->string('url', 100);
$table->float('priority');
$table->integer('category_id')->unsigned();
$table->foreign('category_id')->references('id')->on('bookmark__categories');
$table->id();
$table->string('name');
$table->text('description')->nullable();
$table->string('url');
$table->unsignedBigInteger('category');
$table->foreign('category')
->references('id')
->on('bookmark__categories')
->onDelete('cascade');
$table->timestamps();
});
}
@ -28,6 +30,6 @@ public function up(): void
*/
public function down(): void
{
Schema::dropIfExists('bookmark__sites');
Schema::dropIfExists('bookmarks');
}
};

View file

@ -12,13 +12,12 @@
public function up(): void
{
Schema::create('guestbook__entries', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 255);
$table->bigInteger('timestamp');
$table->string('ip_address', 40);
$table->string('agent', 2048)->default('Agent unavailable');
$table->boolean('site_owner')->default(0);
$table->string('message', 512);
$table->id();
$table->string('name');
$table->string('ip');
$table->string('agent');
$table->longText('message');
$table->boolean('admin');
$table->timestamps();
});
}

View file

@ -0,0 +1,30 @@
<?php
namespace Database\Seeders;
use App\Models\BookmarkCategory;
use App\Models\BookmarkSite;
use Illuminate\Database\Seeder;
class BookmarkCategoriesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void {
// BookmarkCategory::factory()->count(5)->create()->each(function ($category) {
// $category->sites()->saveMany(BookmarkSite::factory()->count(3)->make());
// });
$category = new BookmarkCategory([
'name' => 'cool people',
]);
$category->save();
$site = new BookmarkSite([
'name' => 'campos',
'description' => 'Cool brazilian dude, does programming and stuff',
'url' => 'https://campos02.me/',
'category' => 1,
]);
$site->save();
}
}

View file

@ -1,22 +0,0 @@
<?php
namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
// \App\Models\User::factory(10)->create();
// \App\Models\User::factory()->create([
// 'name' => 'Test User',
// 'email' => 'test@example.com',
// ]);
}
}