diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-10-27 17:04:08 +0200 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-10-27 17:04:08 +0200 |
| commit | 31e3778061a20e0787c076d9353e82b2e223841e (patch) | |
| tree | ad95dad6c9d1d7df57314dd01787be4f23dc7549 /internal/data | |
| parent | 9a1030a5799b4b5e4456152993732c3bff375888 (diff) | |
feat: add setup for SQL
Diffstat (limited to 'internal/data')
| -rw-r--r-- | internal/data/chat.go | 55 | ||||
| -rw-r--r-- | internal/data/db.go | 31 | ||||
| -rw-r--r-- | internal/data/frequencies.sql.go | 63 | ||||
| -rw-r--r-- | internal/data/messages.sql.go | 114 | ||||
| -rw-r--r-- | internal/data/models.go | 41 | ||||
| -rw-r--r-- | internal/data/networks.sql.go | 74 | ||||
| -rw-r--r-- | internal/data/users.sql.go | 84 |
7 files changed, 407 insertions, 55 deletions
diff --git a/internal/data/chat.go b/internal/data/chat.go deleted file mode 100644 index ae5dc67..0000000 --- a/internal/data/chat.go +++ /dev/null @@ -1,55 +0,0 @@ -package data - -import ( - "github.com/kyren223/eko/pkg/snowflake" - "github.com/kyren223/eko/pkg/utils" -) - -// Represents an Eko Network, equivalent to a "discord server". -type Network struct { - id snowflake.ID - name string - frequencies []snowflake.ID -} - -// Represents an Eko Frequency, equivalent to a "discord channel" within a "discord server". -type Frequency struct { - id snowflake.ID - name string -} - -// Represents an Eko Signal, equivalent to a "discord message" between only 2 people. -type Signal struct { - userId1 snowflake.ID - userId2 snowflake.ID -} - -// Represents a message -type Message struct { - Id snowflake.ID - SenderId snowflake.ID - FrequencyId snowflake.ID - NetworkId snowflake.ID - Contents string -} - -func (a Message) CmpTimestamp(b Message) int { - cmpTime := a.Id.Time() - b.Id.Time() - if cmpTime != 0 { - return int(utils.Clamp(cmpTime, -1, 1)) - } - cmpStep := a.Id.Step() - b.Id.Step() - if cmpStep != 0 { - return int(utils.Clamp(cmpStep, -1, 1)) - } - cmpNode := a.Id.Node() - b.Id.Node() - if cmpNode != 0 { - return int(utils.Clamp(cmpNode, -1, 1)) - } - return 0 -} - -// Represents an Eko User -type User struct { - id snowflake.ID -} diff --git a/internal/data/db.go b/internal/data/db.go new file mode 100644 index 0000000..02c70ab --- /dev/null +++ b/internal/data/db.go @@ -0,0 +1,31 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 + +package data + +import ( + "context" + "database/sql" +) + +type DBTX interface { + ExecContext(context.Context, string, ...interface{}) (sql.Result, error) + PrepareContext(context.Context, string) (*sql.Stmt, error) + QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error) + QueryRowContext(context.Context, string, ...interface{}) *sql.Row +} + +func New(db DBTX) *Queries { + return &Queries{db: db} +} + +type Queries struct { + db DBTX +} + +func (q *Queries) WithTx(tx *sql.Tx) *Queries { + return &Queries{ + db: tx, + } +} diff --git a/internal/data/frequencies.sql.go b/internal/data/frequencies.sql.go new file mode 100644 index 0000000..dacbf94 --- /dev/null +++ b/internal/data/frequencies.sql.go @@ -0,0 +1,63 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 +// source: frequencies.sql + +package data + +import ( + "context" + + "github.com/kyren223/eko/pkg/snowflake" +) + +const createFrequency = `-- name: CreateFrequency :one +INSERT INTO frequencies ( + id, network_id, name +) VALUES ( + ?, ?, ? +) +RETURNING id, network_id, name +` + +type CreateFrequencyParams struct { + ID snowflake.ID + NetworkID snowflake.ID + Name string +} + +func (q *Queries) CreateFrequency(ctx context.Context, arg CreateFrequencyParams) (Frequency, error) { + row := q.db.QueryRowContext(ctx, createFrequency, arg.ID, arg.NetworkID, arg.Name) + var i Frequency + err := row.Scan(&i.ID, &i.NetworkID, &i.Name) + return i, err +} + +const getNetworkFrequencies = `-- name: GetNetworkFrequencies :many +SELECT id, network_id, name FROM frequencies +WHERE network_id = ? +ORDER BY id +` + +func (q *Queries) GetNetworkFrequencies(ctx context.Context, networkID snowflake.ID) ([]Frequency, error) { + rows, err := q.db.QueryContext(ctx, getNetworkFrequencies, networkID) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Frequency + for rows.Next() { + var i Frequency + if err := rows.Scan(&i.ID, &i.NetworkID, &i.Name); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/data/messages.sql.go b/internal/data/messages.sql.go new file mode 100644 index 0000000..38d2b24 --- /dev/null +++ b/internal/data/messages.sql.go @@ -0,0 +1,114 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 +// source: messages.sql + +package data + +import ( + "context" + + "github.com/kyren223/eko/pkg/snowflake" +) + +const createDirectMessage = `-- name: CreateDirectMessage :one +INSERT INTO messages ( + id, content, sender_id, receiver_id +) VALUES ( + ?, ?, ?, ? +) +RETURNING id, sender_id, content, frequency_id, receiver_id +` + +type CreateDirectMessageParams struct { + ID snowflake.ID + Content string + SenderID snowflake.ID + ReceiverID snowflake.ID +} + +func (q *Queries) CreateDirectMessage(ctx context.Context, arg CreateDirectMessageParams) (Message, error) { + row := q.db.QueryRowContext(ctx, createDirectMessage, + arg.ID, + arg.Content, + arg.SenderID, + arg.ReceiverID, + ) + var i Message + err := row.Scan( + &i.ID, + &i.SenderID, + &i.Content, + &i.FrequencyID, + &i.ReceiverID, + ) + return i, err +} + +const createMessage = `-- name: CreateMessage :one +INSERT INTO messages ( + id, content, sender_id, frequency_id +) VALUES ( + ?, ?, ?, ? +) +RETURNING id, sender_id, content, frequency_id, receiver_id +` + +type CreateMessageParams struct { + ID snowflake.ID + Content string + SenderID snowflake.ID + FrequencyID snowflake.ID +} + +func (q *Queries) CreateMessage(ctx context.Context, arg CreateMessageParams) (Message, error) { + row := q.db.QueryRowContext(ctx, createMessage, + arg.ID, + arg.Content, + arg.SenderID, + arg.FrequencyID, + ) + var i Message + err := row.Scan( + &i.ID, + &i.SenderID, + &i.Content, + &i.FrequencyID, + &i.ReceiverID, + ) + return i, err +} + +const listMessages = `-- name: ListMessages :many +SELECT id, sender_id, content, frequency_id, receiver_id FROM messages +ORDER BY id +` + +func (q *Queries) ListMessages(ctx context.Context) ([]Message, error) { + rows, err := q.db.QueryContext(ctx, listMessages) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Message + for rows.Next() { + var i Message + if err := rows.Scan( + &i.ID, + &i.SenderID, + &i.Content, + &i.FrequencyID, + &i.ReceiverID, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/data/models.go b/internal/data/models.go new file mode 100644 index 0000000..e7921e2 --- /dev/null +++ b/internal/data/models.go @@ -0,0 +1,41 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 + +package data + +import ( + "crypto/ed25519" + "github.com/kyren223/eko/pkg/snowflake" +) + +type Frequency struct { + ID snowflake.ID + NetworkID snowflake.ID + Name string +} + +type Message struct { + ID snowflake.ID + SenderID snowflake.ID + Content string + FrequencyID snowflake.ID + ReceiverID snowflake.ID +} + +type Network struct { + ID snowflake.ID + Name string + OwnerID snowflake.ID +} + +type User struct { + ID snowflake.ID + Name string + PublicKey ed25519.PublicKey +} + +type UsersNetwork struct { + UserID snowflake.ID + NetworkID snowflake.ID +} diff --git a/internal/data/networks.sql.go b/internal/data/networks.sql.go new file mode 100644 index 0000000..1333863 --- /dev/null +++ b/internal/data/networks.sql.go @@ -0,0 +1,74 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 +// source: networks.sql + +package data + +import ( + "context" + + "github.com/kyren223/eko/pkg/snowflake" +) + +const createNetwork = `-- name: CreateNetwork :one +INSERT INTO networks ( + id, name, owner_id +) VALUES ( + ?, ?, ? +) +RETURNING id, name, owner_id +` + +type CreateNetworkParams struct { + ID snowflake.ID + Name string + OwnerID snowflake.ID +} + +func (q *Queries) CreateNetwork(ctx context.Context, arg CreateNetworkParams) (Network, error) { + row := q.db.QueryRowContext(ctx, createNetwork, arg.ID, arg.Name, arg.OwnerID) + var i Network + err := row.Scan(&i.ID, &i.Name, &i.OwnerID) + return i, err +} + +const getNetwork = `-- name: GetNetwork :one +SELECT id, name, owner_id FROM networks +WHERE id = ? +` + +func (q *Queries) GetNetwork(ctx context.Context, id snowflake.ID) (Network, error) { + row := q.db.QueryRowContext(ctx, getNetwork, id) + var i Network + err := row.Scan(&i.ID, &i.Name, &i.OwnerID) + return i, err +} + +const listNetworks = `-- name: ListNetworks :many +SELECT id, name, owner_id FROM networks +ORDER BY id +` + +func (q *Queries) ListNetworks(ctx context.Context) ([]Network, error) { + rows, err := q.db.QueryContext(ctx, listNetworks) + if err != nil { + return nil, err + } + defer rows.Close() + var items []Network + for rows.Next() { + var i Network + if err := rows.Scan(&i.ID, &i.Name, &i.OwnerID); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil +} diff --git a/internal/data/users.sql.go b/internal/data/users.sql.go new file mode 100644 index 0000000..1ca03ce --- /dev/null +++ b/internal/data/users.sql.go @@ -0,0 +1,84 @@ +// Code generated by sqlc. DO NOT EDIT. +// versions: +// sqlc v1.27.0 +// source: users.sql + +package data + +import ( + "context" + + "crypto/ed25519" + "github.com/kyren223/eko/pkg/snowflake" +) + +const createUser = `-- name: CreateUser :one +INSERT INTO users ( + id, name, public_key +) VALUES ( + ?, 'User' || abs(random()) % 1000000, ? +) +RETURNING id, name, public_key +` + +type CreateUserParams struct { + ID snowflake.ID + PublicKey ed25519.PublicKey +} + +func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (User, error) { + row := q.db.QueryRowContext(ctx, createUser, arg.ID, arg.PublicKey) + var i User + err := row.Scan(&i.ID, &i.Name, &i.PublicKey) + return i, err +} + +const getUser = `-- name: GetUser :one +SELECT id, name, public_key FROM users +WHERE id = ? +` + +func (q *Queries) GetUser(ctx context.Context, id snowflake.ID) (User, error) { + row := q.db.QueryRowContext(ctx, getUser, id) + var i User + err := row.Scan(&i.ID, &i.Name, &i.PublicKey) + return i, err +} + +const setUserName = `-- name: SetUserName :one +UPDATE users SET + name = ? +WHERE id = ? +RETURNING id, name, public_key +` + +type SetUserNameParams struct { + Name string + ID snowflake.ID +} + +func (q *Queries) SetUserName(ctx context.Context, arg SetUserNameParams) (User, error) { + row := q.db.QueryRowContext(ctx, setUserName, arg.Name, arg.ID) + var i User + err := row.Scan(&i.ID, &i.Name, &i.PublicKey) + return i, err +} + +const setUserPublicKey = `-- name: SetUserPublicKey :one +UPDATE users SET + public_key = ? +WHERE id = ? +RETURNING id, name, public_key +` + +type SetUserPublicKeyParams struct { + PublicKey ed25519.PublicKey + ID snowflake.ID +} + +func (q *Queries) SetUserPublicKey(ctx context.Context, arg SetUserPublicKeyParams) (User, error) { + row := q.db.QueryRowContext(ctx, setUserPublicKey, arg.PublicKey, arg.ID) + var i User + err := row.Scan(&i.ID, &i.Name, &i.PublicKey) + return i, err +} |
