WIP: feature_paste #1
|
@ -13,7 +13,7 @@ final class Version20230720115905 extends AbstractMigration
|
||||||
public function up(Schema $schema): void
|
public function up(Schema $schema): void
|
||||||
skobkin marked this conversation as resolved
|
|||||||
{
|
{
|
||||||
$this->addSql('CREATE SEQUENCE paste_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
$this->addSql('CREATE SEQUENCE paste_id_seq INCREMENT BY 1 MINVALUE 1 START 1');
|
||||||
$this->addSql('CREATE TABLE paste (id INT NOT NULL, text TEXT NOT NULL, language VARCHAR(25), description TEXT, filename VARCHAR(128), author VARCHAR(128) NOT NULL, publish_date TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, expiration_date TIMESTAMP(0) WITHOUT TIME ZONE, ip VARCHAR(15) NOT NULL, secret VARCHAR(40), PRIMARY KEY(id))');
|
$this->addSql('CREATE TABLE paste (id INT NOT NULL, text TEXT NOT NULL, language VARCHAR(25), description TEXT, filename VARCHAR(128), author VARCHAR(128), publish_date TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, expiration_date TIMESTAMP(0) WITHOUT TIME ZONE, ip VARCHAR(15) NOT NULL, secret VARCHAR(40), PRIMARY KEY(id))');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function down(Schema $schema): void
|
public function down(Schema $schema): void
|
||||||
|
|
|
@ -37,7 +37,7 @@ class PasteController extends AbstractController
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/{id}/{secret}')]
|
#[Route('/{id}/{secret}')]
|
||||||
public function showPaste(PasteRepository $pasteRepository, string $id, ?string $secret=NULL): Response
|
public function showPaste(PasteRepository $pasteRepository, string $id, ?string $secret = NULL): Response
|
||||||
skobkin
commented
`show_paste` at least.
|
|||||||
{
|
{
|
||||||
$paste = $pasteRepository->findOneBy(['id' => $id, 'secret' => $secret]);
|
$paste = $pasteRepository->findOneBy(['id' => $id, 'secret' => $secret]);
|
||||||
$pasteData = new PasteFormData($paste);
|
$pasteData = new PasteFormData($paste);
|
||||||
|
|
|
@ -15,11 +15,10 @@ class PasteFormData
|
||||||
public ?string $language = null;
|
public ?string $language = null;
|
||||||
public ?string $description = null;
|
public ?string $description = null;
|
||||||
public ?string $filename = null;
|
public ?string $filename = null;
|
||||||
#[Assert\NotBlank]
|
public ?string $author = null;
|
||||||
public string $author = 'anonymous';
|
|
||||||
public ?\DateTimeImmutable $expirationDate;
|
public ?\DateTimeImmutable $expirationDate;
|
||||||
|
|
||||||
skobkin marked this conversation as resolved
skobkin
commented
Why Why `string` and `Assert\NotBlank`?
|
|||||||
public function __construct(?Paste $paste=null)
|
public function __construct(?Paste $paste = null)
|
||||||
{
|
{
|
||||||
skobkin marked this conversation as resolved
skobkin
commented
Is this validation being processed BEFORE storing the data in the DTO? Is this validation being processed BEFORE storing the data in the DTO?
If not, it's pointless as with `bool` field earlier.
|
|||||||
if ($paste === null)
|
if ($paste === null)
|
||||||
{
|
{
|
||||||
skobkin marked this conversation as resolved
skobkin
commented
Or you can make constructor Or you can make constructor `private`, use property promotion and add `fromPaste()` method to create it from the entity.
|
|||||||
|
@ -30,7 +29,7 @@ class PasteFormData
|
||||||
$this->language = $paste->language;
|
$this->language = $paste->language;
|
||||||
$this->description = $paste->description;
|
$this->description = $paste->description;
|
||||||
$this->filename = $paste->filename;
|
$this->filename = $paste->filename;
|
||||||
$this->author = $paste->author;
|
$this->author = $paste->author !== null ? $paste->author : 'anonymous';
|
||||||
$this->expirationDate = $paste->expirationDate;
|
$this->expirationDate = $paste->expirationDate;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -23,8 +23,8 @@ class Paste
|
||||||
public readonly ?string $description,
|
public readonly ?string $description,
|
||||||
#[ORM\Column(type: 'string', length: 128, nullable: true)]
|
#[ORM\Column(type: 'string', length: 128, nullable: true)]
|
||||||
public readonly ?string $filename,
|
public readonly ?string $filename,
|
||||||
skobkin
commented
Why 128? Why 128?
|
|||||||
#[ORM\Column(type: 'string', length: 128, nullable: false)]
|
#[ORM\Column(type: 'string', length: 128, nullable: true)]
|
||||||
public readonly string $author,
|
public readonly ?string $author,
|
||||||
#[ORM\Column(type: 'datetime_immutable', nullable: false)]
|
#[ORM\Column(type: 'datetime_immutable', nullable: false)]
|
||||||
public readonly \DateTimeImmutable $publishDate,
|
public readonly \DateTimeImmutable $publishDate,
|
||||||
#[ORM\Column(type: 'datetime_immutable', nullable: true)]
|
#[ORM\Column(type: 'datetime_immutable', nullable: true)]
|
||||||
|
|
|
@ -28,7 +28,7 @@ class PasteForm extends AbstractType
|
||||||
)
|
)
|
||||||
->add('description', TextType::class, ['required' => false])
|
->add('description', TextType::class, ['required' => false])
|
||||||
->add('text', TextareaType::class)
|
->add('text', TextareaType::class)
|
||||||
->add('author', TextType::class, ['attr' => ['maxlength' =>128]])
|
->add('author', TextType::class, ['attr' => ['maxlength' => 128], 'required' => false])
|
||||||
->add('filename', TextType::class, ['required' => false, 'attr' => ['maxlength' =>128]])
|
->add('filename', TextType::class, ['required' => false, 'attr' => ['maxlength' =>128]])
|
||||||
skobkin
commented
Why 128? Why 128?
|
|||||||
->add('expirationDate', DateTimeType::class, [
|
->add('expirationDate', DateTimeType::class, [
|
||||||
'required' => false,
|
'required' => false,
|
||||||
|
|
Loading…
Reference in a new issue
Do you need it here if it's empty?