Код IT
← Каталог

Рекомендации по разработке на Groovy — Слой доступа к данным

Фрагмент из «Рекомендации по разработке на Groovy»: Слой доступа к данным.

Groovy main.groovy
@CompileStatic
class UserRepository {
    private final Sql sql
    
    UserRepository(DataSource dataSource) {
        this.sql = new Sql(dataSource)
    }
    
    List<User> findAllActive() {
        sql.rows('SELECT * FROM users WHERE status = ?', ['ACTIVE'])
            .collect { rowToUser(it) }
    }
    
    User findById(Long id) {
        def row = sql.firstRow('SELECT * FROM users WHERE id = ?', [id])
        row ? rowToUser(row) : null
    }
    
    private User rowToUser(Map row) {
        new User(
            id: row.id as Long,
            email: row.email as String,
            name: row.name as String,
            status: row.status as String,
            createdAt: row.created_at as Timestamp
        )
    }
}
@CompileStatic
class UserRepository {
    private final Sql sql
    
    UserRepository(DataSource dataSource) {
        this.sql = new Sql(dataSource)
    }
    
    List<User> findAllActive() {
        sql.rows('SELECT * FROM users WHERE status = ?', ['ACTIVE'])
            .collect { rowToUser(it) }
    }
    
    User findById(Long id) {
        def row = sql.firstRow('SELECT * FROM users WHERE id = ?', [id])
        row ? rowToUser(row) : null
    }
    
    private User rowToUser(Map row) {
        new User(
            id: row.id as Long,
            email: row.email as String,
            name: row.name as String,
            status: row.status as String,
            createdAt: row.created_at as Timestamp
        )
    }
}