First Commit

This commit is contained in:
Esteban
2026-07-03 16:27:34 +02:00
commit 7a7440daab
8955 changed files with 1117958 additions and 0 deletions
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
#[Fillable([
'guid', 'title', 'link', 'excerpt', 'content', 'published_at', 'is_read', 'is_favorite',
'full_content_markdown', 'full_content_fetched_at', 'full_content_error',
])]
class Article extends Model
{
protected function casts(): array
{
return [
'published_at' => 'datetime',
'is_read' => 'boolean',
'is_favorite' => 'boolean',
'full_content_fetched_at' => 'datetime',
];
}
public function feed(): BelongsTo
{
return $this->belongsTo(Feed::class);
}
public function scopeForUser(Builder $query, int $userId): Builder
{
return $query->whereHas('feed', fn (Builder $q) => $q->where('user_id', $userId));
}
public function scopeUnread(Builder $query): Builder
{
return $query->where('is_read', false);
}
}
+34
View File
@@ -0,0 +1,34 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
#[Fillable(['url', 'title', 'site_title', 'last_fetched_at', 'last_fetch_status'])]
class Feed extends Model
{
protected function casts(): array
{
return [
'last_fetched_at' => 'datetime',
];
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
public function articles(): HasMany
{
return $this->hasMany(Article::class);
}
public function displayTitle(): string
{
return $this->title ?: ($this->site_title ?: $this->url);
}
}
+38
View File
@@ -0,0 +1,38 @@
<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Database\Factories\UserFactory;
use Illuminate\Database\Eloquent\Attributes\Fillable;
use Illuminate\Database\Eloquent\Attributes\Hidden;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
#[Fillable(['name', 'email', 'password'])]
#[Hidden(['password', 'remember_token'])]
class User extends Authenticatable
{
/** @use HasFactory<UserFactory> */
use HasFactory, Notifiable;
public function feeds(): HasMany
{
return $this->hasMany(Feed::class);
}
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
}