// Path: day-1/part-2/account-service/src/main/java/com/example/account/Account.java
// @NodeEntity
// public class Account {
// 
//     @GraphId
//     private Long id;
// 
//     @JsonIgnore
//     @Relationship(type = "HAS_ACCOUNT", direction = "INCOMING")
//     private User user;
//     private String accountNumber;
//     private AccountStatus status;
// 
//     public Account() {
//         accountNumber = UUID.randomUUID().toString();
//     }
// 
//     public Account(User user) {
//         this();
//         this.user = user;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public User getUser() {
//         return user;
//     }
// 
//     public void setUser(User user) {
//         this.user = user;
//     }
// 
//     public String getAccountNumber() {
//         return accountNumber;
//     }
// 
//     public void setAccountNumber(String accountNumber) {
//         this.accountNumber = accountNumber;
//     }
// 
//     public AccountStatus getStatus() {
//         return status;
//     }
// 
//     public void setStatus(AccountStatus status) {
//         this.status = status;
//     }
// 
//     public Long getUserId() {
//         return user != null ? user.getUserId() : null;
//     }
// 
//     @Override
//     public String toString() {
//         return "Account{" +
//                 "id=" + id +
//                 ", user=" + user +
//                 ", accountNumber='" + accountNumber + '\'' +
//                 '}';
//     }
// }


import com.example.account.Account;
import org.neo4j.ogm.annotation.*;
import java.util.Set;
package com.example.user;



@NodeEntity
public class User {

    @GraphId
    private Long id;

    @Transient
    private UserStatus status;

    @Index(unique = true, primary = true)
    private Long userId;

    @Relationship(type = "HAS_ACCOUNT")
// Path: day-1/part-2/account-service/src/main/java/com/example/account/Account.java
// @NodeEntity
// public class Account {
// 
//     @GraphId
//     private Long id;
// 
//     @JsonIgnore
//     @Relationship(type = "HAS_ACCOUNT", direction = "INCOMING")
//     private User user;
//     private String accountNumber;
//     private AccountStatus status;
// 
//     public Account() {
//         accountNumber = UUID.randomUUID().toString();
//     }
// 
//     public Account(User user) {
//         this();
//         this.user = user;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public User getUser() {
//         return user;
//     }
// 
//     public void setUser(User user) {
//         this.user = user;
//     }
// 
//     public String getAccountNumber() {
//         return accountNumber;
//     }
// 
//     public void setAccountNumber(String accountNumber) {
//         this.accountNumber = accountNumber;
//     }
// 
//     public AccountStatus getStatus() {
//         return status;
//     }
// 
//     public void setStatus(AccountStatus status) {
//         this.status = status;
//     }
// 
//     public Long getUserId() {
//         return user != null ? user.getUserId() : null;
//     }
// 
//     @Override
//     public String toString() {
//         return "Account{" +
//                 "id=" + id +
//                 ", user=" + user +
//                 ", accountNumber='" + accountNumber + '\'' +
//                 '}';
//     }
// }


// Path: day-1/part-2/account-service/src/main/java/com/example/user/User.java
import com.example.account.Account;
import org.neo4j.ogm.annotation.*;
import java.util.Set;

package com.example.user;



@NodeEntity
public class User {

    @GraphId
    private Long id;

    @Transient
    private UserStatus status;

    @Index(unique = true, primary = true)
    private Long userId;

    @Relationship(type = "HAS_ACCOUNT")
    private Set<Account> accounts;