From 137cb4ebfcf33aacbe15af359ed725fb4603d508 Mon Sep 17 00:00:00 2001 From: myrmidex Date: Sun, 29 Jun 2025 20:21:17 +0200 Subject: [PATCH] Generate article publications --- app/Models/ArticlePublication.php | 29 ++++++++++++++++++ ...1847_create_article_publications_table.php | 30 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 app/Models/ArticlePublication.php create mode 100644 database/migrations/2025_06_29_181847_create_article_publications_table.php diff --git a/app/Models/ArticlePublication.php b/app/Models/ArticlePublication.php new file mode 100644 index 0000000..f72f312 --- /dev/null +++ b/app/Models/ArticlePublication.php @@ -0,0 +1,29 @@ + 'datetime', + 'publication_data' => 'array', + ]; + + public function article(): BelongsTo + { + return $this->belongsTo(Article::class); + } +} diff --git a/database/migrations/2025_06_29_181847_create_article_publications_table.php b/database/migrations/2025_06_29_181847_create_article_publications_table.php new file mode 100644 index 0000000..04eb974 --- /dev/null +++ b/database/migrations/2025_06_29_181847_create_article_publications_table.php @@ -0,0 +1,30 @@ +id(); + $table->foreignId('article_id')->constrained()->onDelete('cascade'); + $table->string('post_id'); + $table->unsignedBigInteger('community_id'); + $table->string('platform')->default('lemmy'); + $table->json('publication_data')->nullable(); + $table->timestamp('published_at'); + $table->string('published_by'); + $table->timestamps(); + + $table->unique(['article_id', 'platform', 'community_id']); + }); + } + + public function down(): void + { + Schema::dropIfExists('article_publications'); + } +};