🔥 Add initial database migrations, seeders, and factories

🎨 Refactor `Lecturer` model to include new fields and factory usage
🔧 Update `DatabaseSeeder` to handle default seeds
🛠️ Enhance `einundzwanzig` database configuration for SQLite compatibility
This commit is contained in:
BT
2026-05-02 17:17:13 +01:00
parent 04abf231bd
commit cb61d9d543
54 changed files with 1975 additions and 417 deletions
+3
View File
@@ -2,11 +2,14 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
class Category extends Model
{
use HasFactory;
protected $connection = 'einundzwanzig';
/** @var list<string> */
+8
View File
@@ -3,6 +3,7 @@
namespace App\Models;
use Akuechler\Geoly;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
@@ -13,6 +14,7 @@ use Spatie\Sluggable\SlugOptions;
class City extends Model
{
use Geoly;
use HasFactory;
use HasSlug;
protected $connection = 'einundzwanzig';
@@ -20,6 +22,12 @@ class City extends Model
/** @var list<string> */
protected $fillable = [
'name',
'country_id',
'latitude',
'longitude',
'osm_relation',
'simplified_geojson',
'created_by',
];
/**
+5
View File
@@ -2,16 +2,21 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class Country extends Model
{
use HasFactory;
protected $connection = 'einundzwanzig';
/** @var list<string> */
protected $fillable = [
'name',
'code',
'language_codes',
];
/**
+5
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
@@ -14,6 +15,7 @@ use Spatie\Tags\HasTags;
class Course extends Model implements HasMedia
{
use HasFactory;
use HasTags;
use InteractsWithMedia;
@@ -23,6 +25,9 @@ class Course extends Model implements HasMedia
protected $fillable = [
'name',
'description',
'lecturer_id',
'duration_minutes',
'created_by',
];
/**
+6
View File
@@ -2,17 +2,23 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class CourseEvent extends Model
{
use HasFactory;
protected $connection = 'einundzwanzig';
/** @var list<string> */
protected $fillable = [
'from',
'to',
'course_id',
'venue_id',
'created_by',
];
/**
+3
View File
@@ -2,10 +2,13 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Event extends Model
{
use HasFactory;
/** @var list<string> */
protected $fillable = [
'event_id',
+8
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
@@ -16,6 +17,7 @@ use Spatie\Sluggable\SlugOptions;
class Lecturer extends Model implements HasMedia
{
use HasFactory;
use HasSlug;
use InteractsWithMedia;
@@ -24,6 +26,12 @@ class Lecturer extends Model implements HasMedia
/** @var list<string> */
protected $fillable = [
'name',
'bio',
'npub',
'pubkey',
'website',
'active',
'created_by',
];
/**
+9
View File
@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
@@ -16,6 +17,7 @@ use Spatie\Sluggable\SlugOptions;
class Meetup extends Model implements HasMedia
{
use HasFactory;
use HasSlug;
use InteractsWithMedia;
@@ -24,6 +26,13 @@ class Meetup extends Model implements HasMedia
/** @var list<string> */
protected $fillable = [
'name',
'city_id',
'description',
'website',
'nostr_pubkey',
'github_data',
'simplified_geojson',
'created_by',
];
/**
+11
View File
@@ -2,16 +2,27 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class MeetupEvent extends Model
{
use HasFactory;
protected $connection = 'einundzwanzig';
/** @var list<string> */
protected $fillable = [
'start',
'meetup_id',
'location',
'description',
'link',
'attendees',
'might_attendees',
'nostr_status',
'created_by',
];
/**
+3
View File
@@ -2,10 +2,13 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Profile extends Model
{
use HasFactory;
/** @var list<string> */
protected $fillable = [
'pubkey',
+3
View File
@@ -2,10 +2,13 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class RenderedEvent extends Model
{
use HasFactory;
/** @var list<string> */
protected $fillable = [
'event_id',
+3
View File
@@ -3,10 +3,13 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class SecurityAttempt extends Model
{
use HasFactory;
protected $fillable = [
'ip_address',
'user_agent',
+7
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
@@ -16,6 +17,7 @@ use Staudenmeir\EloquentHasManyDeep\HasRelationships;
class Venue extends Model implements HasMedia
{
use HasFactory;
use HasRelationships;
use HasSlug;
use InteractsWithMedia;
@@ -25,6 +27,11 @@ class Venue extends Model implements HasMedia
/** @var list<string> */
protected $fillable = [
'name',
'city_id',
'description',
'address',
'website',
'created_by',
];
/**
+3
View File
@@ -2,11 +2,14 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Vote extends Model
{
use HasFactory;
/** @var list<string> */
protected $fillable = [
'einundzwanzig_pleb_id',