create table firmware (
    id int not null auto_increment,
    device_id bigint not null,
    version int not null,
    path varchar(4096) not null,
    sha256 char(64),
    size int,
    uploaded_at timestamp not null default current_timestamp,
    primary key (id),
    foreign key (device_id) references devices(id),

    unique(device_id, version)
);

create table firmware_updates (
    id int not null auto_increment,
    firmware_id int not null,
    status varchar(32) not null, -- pending / sent / applied / failed
    requested_at timestamp not null default current_timestamp,
    applied_at timestamp null,

    primary key (id),
    foreign key (firmware_id) references firmware(id)
);