Skip to content

Commit

Permalink
feat(domain-jpa): Device 도메인 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
inferior3x committed Jan 4, 2025
1 parent 49ad893 commit 6c0e938
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,39 @@
package com.whoz_in.domain_jpa.device;

import com.whoz_in.domain.member.model.Member;
import com.whoz_in.domain_jpa.shared.BaseEntity;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import java.util.List;
import java.util.UUID;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.UuidGenerator;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class DeviceEntity extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long deviceId;
@Column(columnDefinition = "BINARY(16)", nullable = false)
private UUID id;

@Column(columnDefinition = "BINARY(16)", nullable = false)
private UUID memberId;

private String name;

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "device_id")
private List<DeviceInfoEntity> deviceInfoEntity;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.whoz_in.domain_jpa.device;

import com.whoz_in.domain.device.model.Device;
import com.whoz_in.domain.device.model.DeviceId;
import com.whoz_in.domain.device.model.DeviceInfo;
import com.whoz_in.domain.member.model.MemberId;
import com.whoz_in.domain_jpa.shared.BaseConverter;
import java.util.List;
import org.springframework.stereotype.Component;

@Component
public class DeviceEntityConverter extends BaseConverter<DeviceEntity, Device> {
@Override
public DeviceEntity from(Device device) {
List<DeviceInfoEntity> deviceInfoEntities = device.getDeviceInfos().stream()
.map(deviceInfo -> DeviceInfoEntity.builder()
.room(deviceInfo.getRoom())
.ssid(deviceInfo.getSsid())
.mac(deviceInfo.getMac().toString())
.build())
.toList();
System.out.println("device.getMemberId().id() = " + device.getMemberId().id());
return new DeviceEntity(device.getId().id(), device.getMemberId().id(), device.getName(), deviceInfoEntities);
}

@Override
public Device to(DeviceEntity entity) {
return Device.load(
new DeviceId(entity.getId()),
new MemberId(entity.getMemberId()),
entity.getDeviceInfoEntity().stream()
.map(deviceInfoEntity -> DeviceInfo.load(
deviceInfoEntity.getRoom(),
deviceInfoEntity.getSsid(),
deviceInfoEntity.getMac()))
.toList(),
entity.getName()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.whoz_in.domain_jpa.device;

import com.whoz_in.domain_jpa.shared.BaseEntity;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class DeviceInfoEntity extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String room;
private String ssid;
private String mac;
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,9 @@
@RequiredArgsConstructor
public class DeviceJpaRepository implements DeviceRepository {
private final DeviceEntityRepository repository;
private final DeviceEntityConverter converter;
@Override
public void save(Device device) {
repository.save(new DeviceEntity());
repository.save(converter.from(device));
}
}

0 comments on commit 6c0e938

Please sign in to comment.