status-go/services/ens/database.go

58 lines
1.2 KiB
Go
Raw Normal View History

2023-01-20 10:34:30 +00:00
package ens
import (
"database/sql"
)
type Database struct {
db *sql.DB
}
type UsernameDetails struct {
Username string `json:"username"`
ChainID uint64 `json:"chainId"`
}
func NewEnsDatabase(db *sql.DB) *Database {
return &Database{db: db}
}
func (db *Database) GetEnsUsernames() (result []*UsernameDetails, err error) {
const sqlQuery = `SELECT username, chain_id
FROM ens_usernames`
rows, err := db.db.Query(sqlQuery)
if err != nil {
return result, err
}
defer rows.Close()
for rows.Next() {
var ensUsername UsernameDetails
err = rows.Scan(&ensUsername.Username, &ensUsername.ChainID)
if err != nil {
return nil, err
}
result = append(result, &ensUsername)
}
return result, nil
}
func (db *Database) AddEnsUsername(details UsernameDetails) error {
const sqlQuery = `INSERT OR REPLACE INTO ens_usernames(username, chain_id)
VALUES (?, ?)`
_, err := db.db.Exec(sqlQuery, details.Username, details.ChainID)
return err
}
func (db *Database) RemoveEnsUsername(Username string, ChainID uint64) error {
const sqlQuery = `DELETE FROM ens_usernames
WHERE username = (?) AND chain_id = ?`
_, err := db.db.Exec(sqlQuery, Username, ChainID)
return err
}