// Path: src/main/java/com/hoserdude/toboot/documentRepository/TodoRepository.java
// public interface TodoRepository extends MongoRepository<Todo, String> {
//     Todo findByUserIdAndId(String userId, String id);
//     List<Todo> findByUserId(String userId);
// }
// 
// Path: src/main/java/com/hoserdude/toboot/domain/User.java
// @Entity
// @Table(name = "tb_user", uniqueConstraints = {@UniqueConstraint(name = "UK_User_userId", columnNames = "userId")})
// public class User implements UserDetails {
// 
//     @Id
//     @GeneratedValue(strategy= GenerationType.AUTO)
//     private Long id;
// 
//     /**
//      * See unique constraint in Table definition
//      */
//     @Column
//     private String userId;
// 
//     @Column
//     private String fullName;
// 
//     @Column
//     private String email;
// 
//     public User() {}
// 
//     public User(String userId, String fullName, String email) {
//         this.userId = userId;
//         this.fullName = fullName;
//         this.email = email;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public String getUserId() {
//         return userId;
//     }
// 
//     public void setUserId(String userId) {
//         this.userId = userId;
//     }
// 
//     public String getFullName() {
//         return fullName;
//     }
// 
//     public void setFullName(String fullName) {
//         this.fullName = fullName;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     // Everything down here is to be cool with Spring Security Interface we are implementing.
// 
//     @Override
//     public Collection<? extends GrantedAuthority> getAuthorities() {
//         return AuthorityUtils.createAuthorityList("ROLE_USER");
//     }
// 
//     /**
//      * Since we use OpenId, we never store this.
//      * @return
//      */
//     @Override
//     public String getPassword() {
//         return "";
//     }
// 
//     /**
//      * We're using the unique ID from OpenID
//      * @return
//      */
//     @Override
//     public String getUsername() {
//         return this.userId;
//     }
// 
//     @Override
//     public boolean isAccountNonExpired() {
//         return true;
//     }
// 
//     @Override
//     public boolean isAccountNonLocked() {
//         return true;
//     }
// 
//     @Override
//     public boolean isCredentialsNonExpired() {
//         return true;
//     }
// 
//     @Override
//     public boolean isEnabled() {
//         return true;
//     }
// 
// }
// 
// Path: src/main/java/com/hoserdude/toboot/domainRepository/UserRepository.java
// @Repository
// public interface UserRepository extends CrudRepository<User, Long> {
//     User findByEmail(String email);
// }


import com.hoserdude.toboot.documentRepository.TodoRepository;
import com.hoserdude.toboot.domain.User;
import com.hoserdude.toboot.domainRepository.UserRepository;
import org.springframework.boot.orm.jpa.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
package com.hoserdude.toboot.config;


@Configuration
@EnableJpaRepositories(basePackageClasses = {UserRepository.class})
@EnableMongoRepositories(basePackageClasses = {TodoRepository.class})
// Path: src/main/java/com/hoserdude/toboot/documentRepository/TodoRepository.java
// public interface TodoRepository extends MongoRepository<Todo, String> {
//     Todo findByUserIdAndId(String userId, String id);
//     List<Todo> findByUserId(String userId);
// }
// 
// Path: src/main/java/com/hoserdude/toboot/domain/User.java
// @Entity
// @Table(name = "tb_user", uniqueConstraints = {@UniqueConstraint(name = "UK_User_userId", columnNames = "userId")})
// public class User implements UserDetails {
// 
//     @Id
//     @GeneratedValue(strategy= GenerationType.AUTO)
//     private Long id;
// 
//     /**
//      * See unique constraint in Table definition
//      */
//     @Column
//     private String userId;
// 
//     @Column
//     private String fullName;
// 
//     @Column
//     private String email;
// 
//     public User() {}
// 
//     public User(String userId, String fullName, String email) {
//         this.userId = userId;
//         this.fullName = fullName;
//         this.email = email;
//     }
// 
//     public Long getId() {
//         return id;
//     }
// 
//     public void setId(Long id) {
//         this.id = id;
//     }
// 
//     public String getUserId() {
//         return userId;
//     }
// 
//     public void setUserId(String userId) {
//         this.userId = userId;
//     }
// 
//     public String getFullName() {
//         return fullName;
//     }
// 
//     public void setFullName(String fullName) {
//         this.fullName = fullName;
//     }
// 
//     public String getEmail() {
//         return email;
//     }
// 
//     public void setEmail(String email) {
//         this.email = email;
//     }
// 
//     // Everything down here is to be cool with Spring Security Interface we are implementing.
// 
//     @Override
//     public Collection<? extends GrantedAuthority> getAuthorities() {
//         return AuthorityUtils.createAuthorityList("ROLE_USER");
//     }
// 
//     /**
//      * Since we use OpenId, we never store this.
//      * @return
//      */
//     @Override
//     public String getPassword() {
//         return "";
//     }
// 
//     /**
//      * We're using the unique ID from OpenID
//      * @return
//      */
//     @Override
//     public String getUsername() {
//         return this.userId;
//     }
// 
//     @Override
//     public boolean isAccountNonExpired() {
//         return true;
//     }
// 
//     @Override
//     public boolean isAccountNonLocked() {
//         return true;
//     }
// 
//     @Override
//     public boolean isCredentialsNonExpired() {
//         return true;
//     }
// 
//     @Override
//     public boolean isEnabled() {
//         return true;
//     }
// 
// }
// 
// Path: src/main/java/com/hoserdude/toboot/domainRepository/UserRepository.java
// @Repository
// public interface UserRepository extends CrudRepository<User, Long> {
//     User findByEmail(String email);
// }


// Path: src/main/java/com/hoserdude/toboot/config/DatabaseConfig.java
import com.hoserdude.toboot.documentRepository.TodoRepository;
import com.hoserdude.toboot.domain.User;
import com.hoserdude.toboot.domainRepository.UserRepository;
import org.springframework.boot.orm.jpa.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;

package com.hoserdude.toboot.config;


@Configuration
@EnableJpaRepositories(basePackageClasses = {UserRepository.class})
@EnableMongoRepositories(basePackageClasses = {TodoRepository.class})
@EntityScan(basePackageClasses = {User.class})