license: built full stack, test and documentation
Some checks failed
docs / build (push) Has been cancelled
docs / deploy (push) Has been cancelled

This commit is contained in:
Giuseppe Naponiello
2026-07-03 12:47:47 +02:00
parent f8206b5840
commit 271acacb1d
39 changed files with 4078 additions and 57 deletions

View File

@@ -0,0 +1,49 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Vocabolario delle licenze applicabili a record (artifact/model) e media.
*
* - `spdx_id`: identificatore SPDX ufficiale, NULL per marchi e rights
* statement (che non stanno nella SPDX License List) mai inventarne.
* - `uri`: URI canonico della licenza (creativecommons.org /
* rightsstatements.org), usato anche nel JSON-LD Linked Art.
* - `file`: nome del testo legale in LICENSES/media/ da includere nello
* zip di download; NULL dove un testo non esiste (mark/statement).
* - `for_record`/`for_media`: scope della licenza, filtrano le select dei
* form (i record ammettono solo licenze aperte, i media tutte).
* - `active`: disattivazione soft da parte degli admin senza rompere le
* FK dei contenuti già licenziati.
*/
public function up(): void
{
Schema::create('licenses', function (Blueprint $table) {
$table->id();
$table->string('name', 200)->unique();
$table->string('acronym', 50)->unique();
$table->string('spdx_id', 50)->nullable()->unique();
$table->string('kind', 20)->default('license');
$table->text('description')->nullable();
$table->string('uri', 2000)->nullable();
$table->string('file', 512)->nullable();
$table->boolean('for_record')->default(false);
$table->boolean('for_media')->default(true);
$table->unsignedInteger('sort_order')->default(0);
$table->boolean('active')->default(true);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('licenses');
}
};