User.php<?php

declare(strict_types=1);

namespace Model;

class User extends Generated\User
{
    // PLACE CUSTOM MODEL CODE HERE
}
Model/Generated/ createdUser.php<?php

declare(strict_types=1);

namespace Model\Generated;

use \Feast\BaseModel;
use \Mapper\UserMapper;

class User extends BaseModel
{
    protected const MAPPER_NAME = UserMapper::class;

    public int $user_id;
    public ?\Feast\Date $created_at;
    public string $username;

}
Model class created
UserMapper.php<?php

declare(strict_types=1);

namespace Mapper;

use \Feast\BaseMapper;
use \Feast\BaseModel;
use \Feast\Exception\DatabaseException;
use \Model\User;

class UserMapper extends BaseMapper
{
    protected const OBJECT_NAME = User::class;
    protected const PRIMARY_KEY = '';
    public const TABLE_NAME = 'users2';

    /**
     * @param int|string $value
     * @param bool $validate
     * @return ?User
     * @throws DatabaseException
     */
    public function findByPrimaryKey(int|string $value, bool $validate = false): ?User
    {
        throw new DatabaseException('No primary key specified for ' . static::TABLE_NAME); 
    }
    
    /**
     * Delete record by Model. Uses primary key.
     *
     * @param BaseModel $record
     * @return int
     * @throws DatabaseException
     */
    public function delete(BaseModel $record): int
    {
        throw new DatabaseException('No primary key specified for ' . static::TABLE_NAME); 
    }
    /**
     * Save model to database.
     *
     * @param BaseModel $record
     * @param bool $forceUpdate
     * @throws DatabaseException
     */
    public function save(BaseModel $record, bool $forceUpdate = false): void
    {
        // @todo: Create save method
        throw new DatabaseException('Save method not yet implemented for ' . static::class);
    }

    /**
     * This method is called when a Model is saved.
     *
     * Update this to call actions on save.
     *
     * @param User $record
     * @param bool $new
     */
    protected function onSave(\Feast\BaseModel|User $record, bool $new = true): void
    {
    }

    /**
     * This method is called when a Model is deleted.
     *
     * Update this to call actions on deletion.
     *
     * @param User $record
     */
    protected function onDelete(\Feast\BaseModel|User $record): void
    {
    }
}
Mapper class created. Save method must be manually created due to no primary key.
