CloseLockHandler.java

package org.sanmibuh.tedee.lock.application;

import lombok.RequiredArgsConstructor;
import org.sanmibuh.ddd.port.CommandHandler;
import org.sanmibuh.tedee.lock.domain.Lock;
import org.sanmibuh.tedee.lock.domain.LockRepository;
import org.sanmibuh.tedee.lock.domain.vo.LockId;

@RequiredArgsConstructor
public final class CloseLockHandler extends CommandHandler<CloseLockCommand, Lock> {

  private final LockRepository repository;

  @Override
  protected Lock execute(final CloseLockCommand command) {
    final var lock = repository.get(new LockId(command.deviceId()));
    lock.lock();
    repository.save(lock);

    return lock;
  }
}