sonr/api/did/v1/tx.pulsar.go

6590 lines
243 KiB
Go
Raw Normal View History

2024-07-05 22:20:13 -04:00
// Code generated by protoc-gen-go-pulsar. DO NOT EDIT.
package didv1
import (
_ "cosmossdk.io/api/cosmos/msg/v1"
fmt "fmt"
_ "github.com/cosmos/cosmos-proto"
runtime "github.com/cosmos/cosmos-proto/runtime"
_ "github.com/cosmos/gogoproto/gogoproto"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoiface "google.golang.org/protobuf/runtime/protoiface"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
io "io"
reflect "reflect"
sort "sort"
2024-07-05 22:20:13 -04:00
sync "sync"
)
var (
md_MsgUpdateParams protoreflect.MessageDescriptor
fd_MsgUpdateParams_authority protoreflect.FieldDescriptor
fd_MsgUpdateParams_params protoreflect.FieldDescriptor
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
fd_MsgUpdateParams_token protoreflect.FieldDescriptor
2024-07-05 22:20:13 -04:00
)
func init() {
file_did_v1_tx_proto_init()
md_MsgUpdateParams = File_did_v1_tx_proto.Messages().ByName("MsgUpdateParams")
fd_MsgUpdateParams_authority = md_MsgUpdateParams.Fields().ByName("authority")
fd_MsgUpdateParams_params = md_MsgUpdateParams.Fields().ByName("params")
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
fd_MsgUpdateParams_token = md_MsgUpdateParams.Fields().ByName("token")
2024-07-05 22:20:13 -04:00
}
var _ protoreflect.Message = (*fastReflection_MsgUpdateParams)(nil)
type fastReflection_MsgUpdateParams MsgUpdateParams
func (x *MsgUpdateParams) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgUpdateParams)(x)
}
func (x *MsgUpdateParams) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_MsgUpdateParams_messageType fastReflection_MsgUpdateParams_messageType
var _ protoreflect.MessageType = fastReflection_MsgUpdateParams_messageType{}
type fastReflection_MsgUpdateParams_messageType struct{}
func (x fastReflection_MsgUpdateParams_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgUpdateParams)(nil)
}
func (x fastReflection_MsgUpdateParams_messageType) New() protoreflect.Message {
return new(fastReflection_MsgUpdateParams)
}
func (x fastReflection_MsgUpdateParams_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgUpdateParams
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MsgUpdateParams) Descriptor() protoreflect.MessageDescriptor {
return md_MsgUpdateParams
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MsgUpdateParams) Type() protoreflect.MessageType {
return _fastReflection_MsgUpdateParams_messageType
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MsgUpdateParams) New() protoreflect.Message {
return new(fastReflection_MsgUpdateParams)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MsgUpdateParams) Interface() protoreflect.ProtoMessage {
return (*MsgUpdateParams)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MsgUpdateParams) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Authority != "" {
value := protoreflect.ValueOfString(x.Authority)
if !f(fd_MsgUpdateParams_authority, value) {
return
}
}
if x.Params != nil {
value := protoreflect.ValueOfMessage(x.Params.ProtoReflect())
if !f(fd_MsgUpdateParams_params, value) {
return
}
}
if x.Token != "" {
value := protoreflect.ValueOfString(x.Token)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if !f(fd_MsgUpdateParams_token, value) {
return
}
}
2024-07-05 22:20:13 -04:00
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MsgUpdateParams) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
case "did.v1.MsgUpdateParams.authority":
return x.Authority != ""
case "did.v1.MsgUpdateParams.params":
return x.Params != nil
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgUpdateParams.token":
return x.Token != ""
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParams does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgUpdateParams) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
case "did.v1.MsgUpdateParams.authority":
x.Authority = ""
case "did.v1.MsgUpdateParams.params":
x.Params = nil
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgUpdateParams.token":
x.Token = ""
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParams does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MsgUpdateParams) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
case "did.v1.MsgUpdateParams.authority":
value := x.Authority
return protoreflect.ValueOfString(value)
case "did.v1.MsgUpdateParams.params":
value := x.Params
return protoreflect.ValueOfMessage(value.ProtoReflect())
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgUpdateParams.token":
value := x.Token
return protoreflect.ValueOfString(value)
2024-07-05 22:20:13 -04:00
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParams does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgUpdateParams) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
case "did.v1.MsgUpdateParams.authority":
x.Authority = value.Interface().(string)
case "did.v1.MsgUpdateParams.params":
x.Params = value.Message().Interface().(*Params)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgUpdateParams.token":
x.Token = value.Interface().(string)
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParams does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgUpdateParams) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgUpdateParams.params":
if x.Params == nil {
x.Params = new(Params)
}
return protoreflect.ValueOfMessage(x.Params.ProtoReflect())
case "did.v1.MsgUpdateParams.authority":
panic(fmt.Errorf("field authority of message did.v1.MsgUpdateParams is not mutable"))
case "did.v1.MsgUpdateParams.token":
panic(fmt.Errorf("field token of message did.v1.MsgUpdateParams is not mutable"))
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParams does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MsgUpdateParams) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgUpdateParams.authority":
return protoreflect.ValueOfString("")
case "did.v1.MsgUpdateParams.params":
m := new(Params)
return protoreflect.ValueOfMessage(m.ProtoReflect())
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgUpdateParams.token":
return protoreflect.ValueOfString("")
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParams"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParams does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MsgUpdateParams) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgUpdateParams", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MsgUpdateParams) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgUpdateParams) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MsgUpdateParams) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MsgUpdateParams) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*MsgUpdateParams)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
l = len(x.Authority)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.Params != nil {
l = options.Size(x.Params)
n += 1 + l + runtime.Sov(uint64(l))
}
l = len(x.Token)
if l > 0 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
n += 1 + l + runtime.Sov(uint64(l))
}
2024-07-05 22:20:13 -04:00
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*MsgUpdateParams)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Token) > 0 {
i -= len(x.Token)
copy(dAtA[i:], x.Token)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token)))
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
i--
dAtA[i] = 0x1a
}
2024-07-05 22:20:13 -04:00
if x.Params != nil {
encoded, err := options.Marshal(x.Params)
if err != nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, err
}
i -= len(encoded)
copy(dAtA[i:], encoded)
i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
i--
dAtA[i] = 0x12
}
if len(x.Authority) > 0 {
i -= len(x.Authority)
copy(dAtA[i:], x.Authority)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))
i--
dAtA[i] = 0xa
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*MsgUpdateParams)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParams: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Authority = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Params", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if x.Params == nil {
x.Params = &Params{}
}
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Params); err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case 3:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType)
}
var stringLen uint64
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Token = string(dAtA[iNdEx:postIndex])
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
iNdEx = postIndex
2024-07-05 22:20:13 -04:00
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
var (
md_MsgUpdateParamsResponse protoreflect.MessageDescriptor
)
func init() {
file_did_v1_tx_proto_init()
md_MsgUpdateParamsResponse = File_did_v1_tx_proto.Messages().ByName("MsgUpdateParamsResponse")
}
var _ protoreflect.Message = (*fastReflection_MsgUpdateParamsResponse)(nil)
type fastReflection_MsgUpdateParamsResponse MsgUpdateParamsResponse
func (x *MsgUpdateParamsResponse) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgUpdateParamsResponse)(x)
}
func (x *MsgUpdateParamsResponse) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_MsgUpdateParamsResponse_messageType fastReflection_MsgUpdateParamsResponse_messageType
var _ protoreflect.MessageType = fastReflection_MsgUpdateParamsResponse_messageType{}
type fastReflection_MsgUpdateParamsResponse_messageType struct{}
func (x fastReflection_MsgUpdateParamsResponse_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgUpdateParamsResponse)(nil)
}
func (x fastReflection_MsgUpdateParamsResponse_messageType) New() protoreflect.Message {
return new(fastReflection_MsgUpdateParamsResponse)
}
func (x fastReflection_MsgUpdateParamsResponse_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgUpdateParamsResponse
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MsgUpdateParamsResponse) Descriptor() protoreflect.MessageDescriptor {
return md_MsgUpdateParamsResponse
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MsgUpdateParamsResponse) Type() protoreflect.MessageType {
return _fastReflection_MsgUpdateParamsResponse_messageType
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MsgUpdateParamsResponse) New() protoreflect.Message {
return new(fastReflection_MsgUpdateParamsResponse)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MsgUpdateParamsResponse) Interface() protoreflect.ProtoMessage {
return (*MsgUpdateParamsResponse)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MsgUpdateParamsResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MsgUpdateParamsResponse) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParamsResponse"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgUpdateParamsResponse) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParamsResponse"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MsgUpdateParamsResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParamsResponse"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParamsResponse does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgUpdateParamsResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParamsResponse"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgUpdateParamsResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParamsResponse"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MsgUpdateParamsResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgUpdateParamsResponse"))
}
panic(fmt.Errorf("message did.v1.MsgUpdateParamsResponse does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MsgUpdateParamsResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgUpdateParamsResponse", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MsgUpdateParamsResponse) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgUpdateParamsResponse) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MsgUpdateParamsResponse) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MsgUpdateParamsResponse) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*MsgUpdateParamsResponse)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*MsgUpdateParamsResponse)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*MsgUpdateParamsResponse)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgUpdateParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
var (
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
md_MsgAllocateVault protoreflect.MessageDescriptor
fd_MsgAllocateVault_authority protoreflect.FieldDescriptor
fd_MsgAllocateVault_subject protoreflect.FieldDescriptor
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
fd_MsgAllocateVault_origin protoreflect.FieldDescriptor
)
func init() {
file_did_v1_tx_proto_init()
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
md_MsgAllocateVault = File_did_v1_tx_proto.Messages().ByName("MsgAllocateVault")
fd_MsgAllocateVault_authority = md_MsgAllocateVault.Fields().ByName("authority")
fd_MsgAllocateVault_subject = md_MsgAllocateVault.Fields().ByName("subject")
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
fd_MsgAllocateVault_origin = md_MsgAllocateVault.Fields().ByName("origin")
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
var _ protoreflect.Message = (*fastReflection_MsgAllocateVault)(nil)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
type fastReflection_MsgAllocateVault MsgAllocateVault
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *MsgAllocateVault) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgAllocateVault)(x)
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *MsgAllocateVault) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
var _fastReflection_MsgAllocateVault_messageType fastReflection_MsgAllocateVault_messageType
var _ protoreflect.MessageType = fastReflection_MsgAllocateVault_messageType{}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
type fastReflection_MsgAllocateVault_messageType struct{}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x fastReflection_MsgAllocateVault_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgAllocateVault)(nil)
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x fastReflection_MsgAllocateVault_messageType) New() protoreflect.Message {
return new(fastReflection_MsgAllocateVault)
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x fastReflection_MsgAllocateVault_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgAllocateVault
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Descriptor() protoreflect.MessageDescriptor {
return md_MsgAllocateVault
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Type() protoreflect.MessageType {
return _fastReflection_MsgAllocateVault_messageType
}
// New returns a newly allocated and mutable empty message.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) New() protoreflect.Message {
return new(fastReflection_MsgAllocateVault)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Interface() protoreflect.ProtoMessage {
return (*MsgAllocateVault)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Authority != "" {
value := protoreflect.ValueOfString(x.Authority)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if !f(fd_MsgAllocateVault_authority, value) {
return
}
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x.Subject != "" {
value := protoreflect.ValueOfString(x.Subject)
if !f(fd_MsgAllocateVault_subject, value) {
return
}
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
if x.Origin != "" {
value := protoreflect.ValueOfString(x.Origin)
if !f(fd_MsgAllocateVault_origin, value) {
return
}
}
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.authority":
return x.Authority != ""
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.subject":
return x.Subject != ""
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVault.origin":
return x.Origin != ""
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.authority":
x.Authority = ""
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.subject":
x.Subject = ""
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVault.origin":
x.Origin = ""
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.authority":
value := x.Authority
return protoreflect.ValueOfString(value)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.subject":
value := x.Subject
return protoreflect.ValueOfString(value)
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVault.origin":
value := x.Origin
return protoreflect.ValueOfString(value)
default:
if descriptor.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.authority":
x.Authority = value.Interface().(string)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.subject":
x.Subject = value.Interface().(string)
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVault.origin":
x.Origin = value.Interface().(string)
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.authority":
panic(fmt.Errorf("field authority of message did.v1.MsgAllocateVault is not mutable"))
case "did.v1.MsgAllocateVault.subject":
panic(fmt.Errorf("field subject of message did.v1.MsgAllocateVault is not mutable"))
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVault.origin":
panic(fmt.Errorf("field origin of message did.v1.MsgAllocateVault is not mutable"))
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.authority":
return protoreflect.ValueOfString("")
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVault.subject":
return protoreflect.ValueOfString("")
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVault.origin":
return protoreflect.ValueOfString("")
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVault"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVault does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAllocateVault", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVault) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x := input.Message.Interface().(*MsgAllocateVault)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
l = len(x.Authority)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
l = len(x.Subject)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
l = len(x.Origin)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x := input.Message.Interface().(*MsgAllocateVault)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
if len(x.Origin) > 0 {
i -= len(x.Origin)
copy(dAtA[i:], x.Origin)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin)))
i--
dAtA[i] = 0x1a
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if len(x.Subject) > 0 {
i -= len(x.Subject)
copy(dAtA[i:], x.Subject)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Subject)))
i--
dAtA[i] = 0x12
}
if len(x.Authority) > 0 {
i -= len(x.Authority)
copy(dAtA[i:], x.Authority)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))
i--
dAtA[i] = 0xa
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x := input.Message.Interface().(*MsgAllocateVault)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVault: wiretype end group for non-group")
}
if fieldNum <= 0 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVault: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Authority = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Subject", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x.Subject = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType)
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
x.Origin = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
var (
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
md_MsgAllocateVaultResponse protoreflect.MessageDescriptor
fd_MsgAllocateVaultResponse_cid protoreflect.FieldDescriptor
fd_MsgAllocateVaultResponse_expiry_block protoreflect.FieldDescriptor
fd_MsgAllocateVaultResponse_registration_options protoreflect.FieldDescriptor
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
fd_MsgAllocateVaultResponse_localhost protoreflect.FieldDescriptor
)
func init() {
file_did_v1_tx_proto_init()
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
md_MsgAllocateVaultResponse = File_did_v1_tx_proto.Messages().ByName("MsgAllocateVaultResponse")
fd_MsgAllocateVaultResponse_cid = md_MsgAllocateVaultResponse.Fields().ByName("cid")
fd_MsgAllocateVaultResponse_expiry_block = md_MsgAllocateVaultResponse.Fields().ByName("expiry_block")
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
fd_MsgAllocateVaultResponse_registration_options = md_MsgAllocateVaultResponse.Fields().ByName("registration_options")
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
fd_MsgAllocateVaultResponse_localhost = md_MsgAllocateVaultResponse.Fields().ByName("localhost")
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
var _ protoreflect.Message = (*fastReflection_MsgAllocateVaultResponse)(nil)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
type fastReflection_MsgAllocateVaultResponse MsgAllocateVaultResponse
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *MsgAllocateVaultResponse) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgAllocateVaultResponse)(x)
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *MsgAllocateVaultResponse) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
var _fastReflection_MsgAllocateVaultResponse_messageType fastReflection_MsgAllocateVaultResponse_messageType
var _ protoreflect.MessageType = fastReflection_MsgAllocateVaultResponse_messageType{}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
type fastReflection_MsgAllocateVaultResponse_messageType struct{}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x fastReflection_MsgAllocateVaultResponse_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgAllocateVaultResponse)(nil)
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x fastReflection_MsgAllocateVaultResponse_messageType) New() protoreflect.Message {
return new(fastReflection_MsgAllocateVaultResponse)
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x fastReflection_MsgAllocateVaultResponse_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgAllocateVaultResponse
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Descriptor() protoreflect.MessageDescriptor {
return md_MsgAllocateVaultResponse
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Type() protoreflect.MessageType {
return _fastReflection_MsgAllocateVaultResponse_messageType
}
// New returns a newly allocated and mutable empty message.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) New() protoreflect.Message {
return new(fastReflection_MsgAllocateVaultResponse)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Interface() protoreflect.ProtoMessage {
return (*MsgAllocateVaultResponse)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Cid != "" {
value := protoreflect.ValueOfString(x.Cid)
if !f(fd_MsgAllocateVaultResponse_cid, value) {
return
}
}
if x.ExpiryBlock != int64(0) {
value := protoreflect.ValueOfInt64(x.ExpiryBlock)
if !f(fd_MsgAllocateVaultResponse_expiry_block, value) {
return
}
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
if x.RegistrationOptions != "" {
value := protoreflect.ValueOfString(x.RegistrationOptions)
if !f(fd_MsgAllocateVaultResponse_registration_options, value) {
return
}
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
if x.Localhost != false {
value := protoreflect.ValueOfBool(x.Localhost)
if !f(fd_MsgAllocateVaultResponse_localhost, value) {
return
}
}
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVaultResponse.cid":
return x.Cid != ""
case "did.v1.MsgAllocateVaultResponse.expiry_block":
return x.ExpiryBlock != int64(0)
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVaultResponse.registration_options":
return x.RegistrationOptions != ""
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
case "did.v1.MsgAllocateVaultResponse.localhost":
return x.Localhost != false
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVaultResponse.cid":
x.Cid = ""
case "did.v1.MsgAllocateVaultResponse.expiry_block":
x.ExpiryBlock = int64(0)
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVaultResponse.registration_options":
x.RegistrationOptions = ""
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
case "did.v1.MsgAllocateVaultResponse.localhost":
x.Localhost = false
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVaultResponse.cid":
value := x.Cid
return protoreflect.ValueOfString(value)
case "did.v1.MsgAllocateVaultResponse.expiry_block":
value := x.ExpiryBlock
return protoreflect.ValueOfInt64(value)
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVaultResponse.registration_options":
value := x.RegistrationOptions
return protoreflect.ValueOfString(value)
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
case "did.v1.MsgAllocateVaultResponse.localhost":
value := x.Localhost
return protoreflect.ValueOfBool(value)
default:
if descriptor.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVaultResponse.cid":
x.Cid = value.Interface().(string)
case "did.v1.MsgAllocateVaultResponse.expiry_block":
x.ExpiryBlock = value.Int()
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVaultResponse.registration_options":
x.RegistrationOptions = value.Interface().(string)
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
case "did.v1.MsgAllocateVaultResponse.localhost":
x.Localhost = value.Bool()
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVaultResponse.cid":
panic(fmt.Errorf("field cid of message did.v1.MsgAllocateVaultResponse is not mutable"))
case "did.v1.MsgAllocateVaultResponse.expiry_block":
panic(fmt.Errorf("field expiry_block of message did.v1.MsgAllocateVaultResponse is not mutable"))
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVaultResponse.registration_options":
panic(fmt.Errorf("field registration_options of message did.v1.MsgAllocateVaultResponse is not mutable"))
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
case "did.v1.MsgAllocateVaultResponse.localhost":
panic(fmt.Errorf("field localhost of message did.v1.MsgAllocateVaultResponse is not mutable"))
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case "did.v1.MsgAllocateVaultResponse.cid":
return protoreflect.ValueOfString("")
case "did.v1.MsgAllocateVaultResponse.expiry_block":
return protoreflect.ValueOfInt64(int64(0))
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case "did.v1.MsgAllocateVaultResponse.registration_options":
return protoreflect.ValueOfString("")
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
case "did.v1.MsgAllocateVaultResponse.localhost":
return protoreflect.ValueOfBool(false)
default:
if fd.IsExtension() {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAllocateVaultResponse"))
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("message did.v1.MsgAllocateVaultResponse does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAllocateVaultResponse", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *fastReflection_MsgAllocateVaultResponse) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x := input.Message.Interface().(*MsgAllocateVaultResponse)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
l = len(x.Cid)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.ExpiryBlock != 0 {
n += 1 + runtime.Sov(uint64(x.ExpiryBlock))
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
l = len(x.RegistrationOptions)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
if x.Localhost {
n += 2
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x := input.Message.Interface().(*MsgAllocateVaultResponse)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
if x.Localhost {
i--
if x.Localhost {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x20
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
if len(x.RegistrationOptions) > 0 {
i -= len(x.RegistrationOptions)
copy(dAtA[i:], x.RegistrationOptions)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.RegistrationOptions)))
i--
dAtA[i] = 0x1a
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x.ExpiryBlock != 0 {
i = runtime.EncodeVarint(dAtA, i, uint64(x.ExpiryBlock))
i--
dAtA[i] = 0x10
}
if len(x.Cid) > 0 {
i -= len(x.Cid)
copy(dAtA[i:], x.Cid)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Cid)))
i--
dAtA[i] = 0xa
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x := input.Message.Interface().(*MsgAllocateVaultResponse)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVaultResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAllocateVaultResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case 1:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Cid", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Cid = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field ExpiryBlock", wireType)
}
x.ExpiryBlock = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
x.ExpiryBlock |= int64(b&0x7F) << shift
if b < 0x80 {
break
}
}
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
case 3:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field RegistrationOptions", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.RegistrationOptions = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
case 4:
if wireType != 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Localhost", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
x.Localhost = bool(v != 0)
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
2024-07-05 22:20:13 -04:00
var _ protoreflect.List = (*_MsgRegisterController_2_list)(nil)
type _MsgRegisterController_2_list struct {
list *[][]byte
}
func (x *_MsgRegisterController_2_list) Len() int {
if x.list == nil {
return 0
}
return len(*x.list)
}
func (x *_MsgRegisterController_2_list) Get(i int) protoreflect.Value {
return protoreflect.ValueOfBytes((*x.list)[i])
}
func (x *_MsgRegisterController_2_list) Set(i int, value protoreflect.Value) {
valueUnwrapped := value.Bytes()
concreteValue := valueUnwrapped
(*x.list)[i] = concreteValue
}
func (x *_MsgRegisterController_2_list) Append(value protoreflect.Value) {
valueUnwrapped := value.Bytes()
concreteValue := valueUnwrapped
*x.list = append(*x.list, concreteValue)
}
func (x *_MsgRegisterController_2_list) AppendMutable() protoreflect.Value {
panic(fmt.Errorf("AppendMutable can not be called on message MsgRegisterController at list field Assertions as it is not of Message kind"))
}
func (x *_MsgRegisterController_2_list) Truncate(n int) {
*x.list = (*x.list)[:n]
}
func (x *_MsgRegisterController_2_list) NewElement() protoreflect.Value {
var v []byte
return protoreflect.ValueOfBytes(v)
}
func (x *_MsgRegisterController_2_list) IsValid() bool {
return x.list != nil
}
var _ protoreflect.List = (*_MsgRegisterController_3_list)(nil)
type _MsgRegisterController_3_list struct {
list *[][]byte
}
func (x *_MsgRegisterController_3_list) Len() int {
if x.list == nil {
return 0
}
return len(*x.list)
}
func (x *_MsgRegisterController_3_list) Get(i int) protoreflect.Value {
return protoreflect.ValueOfBytes((*x.list)[i])
}
func (x *_MsgRegisterController_3_list) Set(i int, value protoreflect.Value) {
valueUnwrapped := value.Bytes()
concreteValue := valueUnwrapped
(*x.list)[i] = concreteValue
}
func (x *_MsgRegisterController_3_list) Append(value protoreflect.Value) {
valueUnwrapped := value.Bytes()
concreteValue := valueUnwrapped
*x.list = append(*x.list, concreteValue)
}
func (x *_MsgRegisterController_3_list) AppendMutable() protoreflect.Value {
panic(fmt.Errorf("AppendMutable can not be called on message MsgRegisterController at list field Keyshares as it is not of Message kind"))
}
func (x *_MsgRegisterController_3_list) Truncate(n int) {
*x.list = (*x.list)[:n]
}
func (x *_MsgRegisterController_3_list) NewElement() protoreflect.Value {
var v []byte
return protoreflect.ValueOfBytes(v)
}
func (x *_MsgRegisterController_3_list) IsValid() bool {
return x.list != nil
}
var _ protoreflect.List = (*_MsgRegisterController_4_list)(nil)
type _MsgRegisterController_4_list struct {
list *[][]byte
}
func (x *_MsgRegisterController_4_list) Len() int {
if x.list == nil {
return 0
}
return len(*x.list)
}
func (x *_MsgRegisterController_4_list) Get(i int) protoreflect.Value {
return protoreflect.ValueOfBytes((*x.list)[i])
}
func (x *_MsgRegisterController_4_list) Set(i int, value protoreflect.Value) {
valueUnwrapped := value.Bytes()
concreteValue := valueUnwrapped
(*x.list)[i] = concreteValue
}
func (x *_MsgRegisterController_4_list) Append(value protoreflect.Value) {
valueUnwrapped := value.Bytes()
concreteValue := valueUnwrapped
*x.list = append(*x.list, concreteValue)
}
func (x *_MsgRegisterController_4_list) AppendMutable() protoreflect.Value {
panic(fmt.Errorf("AppendMutable can not be called on message MsgRegisterController at list field Verifications as it is not of Message kind"))
}
func (x *_MsgRegisterController_4_list) Truncate(n int) {
*x.list = (*x.list)[:n]
}
func (x *_MsgRegisterController_4_list) NewElement() protoreflect.Value {
var v []byte
return protoreflect.ValueOfBytes(v)
}
func (x *_MsgRegisterController_4_list) IsValid() bool {
return x.list != nil
}
var (
md_MsgRegisterController protoreflect.MessageDescriptor
fd_MsgRegisterController_authority protoreflect.FieldDescriptor
fd_MsgRegisterController_assertions protoreflect.FieldDescriptor
fd_MsgRegisterController_keyshares protoreflect.FieldDescriptor
fd_MsgRegisterController_verifications protoreflect.FieldDescriptor
)
func init() {
file_did_v1_tx_proto_init()
md_MsgRegisterController = File_did_v1_tx_proto.Messages().ByName("MsgRegisterController")
fd_MsgRegisterController_authority = md_MsgRegisterController.Fields().ByName("authority")
fd_MsgRegisterController_assertions = md_MsgRegisterController.Fields().ByName("assertions")
fd_MsgRegisterController_keyshares = md_MsgRegisterController.Fields().ByName("keyshares")
fd_MsgRegisterController_verifications = md_MsgRegisterController.Fields().ByName("verifications")
}
var _ protoreflect.Message = (*fastReflection_MsgRegisterController)(nil)
type fastReflection_MsgRegisterController MsgRegisterController
func (x *MsgRegisterController) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgRegisterController)(x)
}
func (x *MsgRegisterController) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_MsgRegisterController_messageType fastReflection_MsgRegisterController_messageType
var _ protoreflect.MessageType = fastReflection_MsgRegisterController_messageType{}
type fastReflection_MsgRegisterController_messageType struct{}
func (x fastReflection_MsgRegisterController_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgRegisterController)(nil)
}
func (x fastReflection_MsgRegisterController_messageType) New() protoreflect.Message {
return new(fastReflection_MsgRegisterController)
}
func (x fastReflection_MsgRegisterController_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgRegisterController
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MsgRegisterController) Descriptor() protoreflect.MessageDescriptor {
return md_MsgRegisterController
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MsgRegisterController) Type() protoreflect.MessageType {
return _fastReflection_MsgRegisterController_messageType
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MsgRegisterController) New() protoreflect.Message {
return new(fastReflection_MsgRegisterController)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MsgRegisterController) Interface() protoreflect.ProtoMessage {
return (*MsgRegisterController)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MsgRegisterController) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Authority != "" {
value := protoreflect.ValueOfString(x.Authority)
if !f(fd_MsgRegisterController_authority, value) {
return
}
}
if len(x.Assertions) != 0 {
value := protoreflect.ValueOfList(&_MsgRegisterController_2_list{list: &x.Assertions})
if !f(fd_MsgRegisterController_assertions, value) {
return
}
}
if len(x.Keyshares) != 0 {
value := protoreflect.ValueOfList(&_MsgRegisterController_3_list{list: &x.Keyshares})
if !f(fd_MsgRegisterController_keyshares, value) {
return
}
}
if len(x.Verifications) != 0 {
value := protoreflect.ValueOfList(&_MsgRegisterController_4_list{list: &x.Verifications})
if !f(fd_MsgRegisterController_verifications, value) {
return
}
}
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MsgRegisterController) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
case "did.v1.MsgRegisterController.authority":
return x.Authority != ""
case "did.v1.MsgRegisterController.assertions":
return len(x.Assertions) != 0
case "did.v1.MsgRegisterController.keyshares":
return len(x.Keyshares) != 0
case "did.v1.MsgRegisterController.verifications":
return len(x.Verifications) != 0
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterController does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterController) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
case "did.v1.MsgRegisterController.authority":
x.Authority = ""
case "did.v1.MsgRegisterController.assertions":
x.Assertions = nil
case "did.v1.MsgRegisterController.keyshares":
x.Keyshares = nil
case "did.v1.MsgRegisterController.verifications":
x.Verifications = nil
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterController does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MsgRegisterController) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
case "did.v1.MsgRegisterController.authority":
value := x.Authority
return protoreflect.ValueOfString(value)
case "did.v1.MsgRegisterController.assertions":
if len(x.Assertions) == 0 {
return protoreflect.ValueOfList(&_MsgRegisterController_2_list{})
}
listValue := &_MsgRegisterController_2_list{list: &x.Assertions}
return protoreflect.ValueOfList(listValue)
case "did.v1.MsgRegisterController.keyshares":
if len(x.Keyshares) == 0 {
return protoreflect.ValueOfList(&_MsgRegisterController_3_list{})
}
listValue := &_MsgRegisterController_3_list{list: &x.Keyshares}
return protoreflect.ValueOfList(listValue)
case "did.v1.MsgRegisterController.verifications":
if len(x.Verifications) == 0 {
return protoreflect.ValueOfList(&_MsgRegisterController_4_list{})
}
listValue := &_MsgRegisterController_4_list{list: &x.Verifications}
return protoreflect.ValueOfList(listValue)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterController does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterController) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
case "did.v1.MsgRegisterController.authority":
x.Authority = value.Interface().(string)
case "did.v1.MsgRegisterController.assertions":
lv := value.List()
clv := lv.(*_MsgRegisterController_2_list)
x.Assertions = *clv.list
case "did.v1.MsgRegisterController.keyshares":
lv := value.List()
clv := lv.(*_MsgRegisterController_3_list)
x.Keyshares = *clv.list
case "did.v1.MsgRegisterController.verifications":
lv := value.List()
clv := lv.(*_MsgRegisterController_4_list)
x.Verifications = *clv.list
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterController does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterController) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgRegisterController.assertions":
if x.Assertions == nil {
x.Assertions = [][]byte{}
}
value := &_MsgRegisterController_2_list{list: &x.Assertions}
return protoreflect.ValueOfList(value)
case "did.v1.MsgRegisterController.keyshares":
if x.Keyshares == nil {
x.Keyshares = [][]byte{}
}
value := &_MsgRegisterController_3_list{list: &x.Keyshares}
return protoreflect.ValueOfList(value)
case "did.v1.MsgRegisterController.verifications":
if x.Verifications == nil {
x.Verifications = [][]byte{}
}
value := &_MsgRegisterController_4_list{list: &x.Verifications}
return protoreflect.ValueOfList(value)
case "did.v1.MsgRegisterController.authority":
panic(fmt.Errorf("field authority of message did.v1.MsgRegisterController is not mutable"))
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterController does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MsgRegisterController) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgRegisterController.authority":
return protoreflect.ValueOfString("")
case "did.v1.MsgRegisterController.assertions":
list := [][]byte{}
return protoreflect.ValueOfList(&_MsgRegisterController_2_list{list: &list})
case "did.v1.MsgRegisterController.keyshares":
list := [][]byte{}
return protoreflect.ValueOfList(&_MsgRegisterController_3_list{list: &list})
case "did.v1.MsgRegisterController.verifications":
list := [][]byte{}
return protoreflect.ValueOfList(&_MsgRegisterController_4_list{list: &list})
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterController"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterController does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MsgRegisterController) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgRegisterController", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MsgRegisterController) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterController) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MsgRegisterController) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MsgRegisterController) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*MsgRegisterController)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
l = len(x.Authority)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if len(x.Assertions) > 0 {
for _, b := range x.Assertions {
l = len(b)
n += 1 + l + runtime.Sov(uint64(l))
}
}
if len(x.Keyshares) > 0 {
for _, b := range x.Keyshares {
l = len(b)
n += 1 + l + runtime.Sov(uint64(l))
}
}
if len(x.Verifications) > 0 {
for _, b := range x.Verifications {
l = len(b)
n += 1 + l + runtime.Sov(uint64(l))
}
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*MsgRegisterController)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Verifications) > 0 {
for iNdEx := len(x.Verifications) - 1; iNdEx >= 0; iNdEx-- {
i -= len(x.Verifications[iNdEx])
copy(dAtA[i:], x.Verifications[iNdEx])
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Verifications[iNdEx])))
i--
dAtA[i] = 0x22
}
}
if len(x.Keyshares) > 0 {
for iNdEx := len(x.Keyshares) - 1; iNdEx >= 0; iNdEx-- {
i -= len(x.Keyshares[iNdEx])
copy(dAtA[i:], x.Keyshares[iNdEx])
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Keyshares[iNdEx])))
i--
dAtA[i] = 0x1a
}
}
if len(x.Assertions) > 0 {
for iNdEx := len(x.Assertions) - 1; iNdEx >= 0; iNdEx-- {
i -= len(x.Assertions[iNdEx])
copy(dAtA[i:], x.Assertions[iNdEx])
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Assertions[iNdEx])))
i--
dAtA[i] = 0x12
}
}
if len(x.Authority) > 0 {
i -= len(x.Authority)
copy(dAtA[i:], x.Authority)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Authority)))
i--
dAtA[i] = 0xa
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*MsgRegisterController)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterController: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterController: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Authority", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Authority = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Assertions", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Assertions = append(x.Assertions, make([]byte, postIndex-iNdEx))
copy(x.Assertions[len(x.Assertions)-1], dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Keyshares", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Keyshares = append(x.Keyshares, make([]byte, postIndex-iNdEx))
copy(x.Keyshares[len(x.Keyshares)-1], dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 4:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Verifications", wireType)
}
var byteLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
byteLen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if byteLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + byteLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Verifications = append(x.Verifications, make([]byte, postIndex-iNdEx))
copy(x.Verifications[len(x.Verifications)-1], dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
var _ protoreflect.Map = (*_MsgRegisterControllerResponse_3_map)(nil)
type _MsgRegisterControllerResponse_3_map struct {
m *map[string]string
}
func (x *_MsgRegisterControllerResponse_3_map) Len() int {
if x.m == nil {
return 0
}
return len(*x.m)
}
func (x *_MsgRegisterControllerResponse_3_map) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {
if x.m == nil {
return
}
for k, v := range *x.m {
mapKey := (protoreflect.MapKey)(protoreflect.ValueOfString(k))
mapValue := protoreflect.ValueOfString(v)
if !f(mapKey, mapValue) {
break
}
}
}
func (x *_MsgRegisterControllerResponse_3_map) Has(key protoreflect.MapKey) bool {
if x.m == nil {
return false
}
keyUnwrapped := key.String()
concreteValue := keyUnwrapped
_, ok := (*x.m)[concreteValue]
return ok
}
func (x *_MsgRegisterControllerResponse_3_map) Clear(key protoreflect.MapKey) {
if x.m == nil {
return
}
keyUnwrapped := key.String()
concreteKey := keyUnwrapped
delete(*x.m, concreteKey)
}
func (x *_MsgRegisterControllerResponse_3_map) Get(key protoreflect.MapKey) protoreflect.Value {
if x.m == nil {
return protoreflect.Value{}
}
keyUnwrapped := key.String()
concreteKey := keyUnwrapped
v, ok := (*x.m)[concreteKey]
if !ok {
return protoreflect.Value{}
}
return protoreflect.ValueOfString(v)
}
func (x *_MsgRegisterControllerResponse_3_map) Set(key protoreflect.MapKey, value protoreflect.Value) {
if !key.IsValid() || !value.IsValid() {
panic("invalid key or value provided")
}
keyUnwrapped := key.String()
concreteKey := keyUnwrapped
valueUnwrapped := value.String()
concreteValue := valueUnwrapped
(*x.m)[concreteKey] = concreteValue
}
func (x *_MsgRegisterControllerResponse_3_map) Mutable(key protoreflect.MapKey) protoreflect.Value {
panic("should not call Mutable on protoreflect.Map whose value is not of type protoreflect.Message")
}
func (x *_MsgRegisterControllerResponse_3_map) NewValue() protoreflect.Value {
v := ""
return protoreflect.ValueOfString(v)
}
func (x *_MsgRegisterControllerResponse_3_map) IsValid() bool {
return x.m != nil
}
var (
md_MsgRegisterControllerResponse protoreflect.MessageDescriptor
fd_MsgRegisterControllerResponse_success protoreflect.FieldDescriptor
fd_MsgRegisterControllerResponse_controller protoreflect.FieldDescriptor
fd_MsgRegisterControllerResponse_accounts protoreflect.FieldDescriptor
)
func init() {
file_did_v1_tx_proto_init()
md_MsgRegisterControllerResponse = File_did_v1_tx_proto.Messages().ByName("MsgRegisterControllerResponse")
fd_MsgRegisterControllerResponse_success = md_MsgRegisterControllerResponse.Fields().ByName("success")
fd_MsgRegisterControllerResponse_controller = md_MsgRegisterControllerResponse.Fields().ByName("controller")
fd_MsgRegisterControllerResponse_accounts = md_MsgRegisterControllerResponse.Fields().ByName("accounts")
}
var _ protoreflect.Message = (*fastReflection_MsgRegisterControllerResponse)(nil)
type fastReflection_MsgRegisterControllerResponse MsgRegisterControllerResponse
func (x *MsgRegisterControllerResponse) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgRegisterControllerResponse)(x)
}
func (x *MsgRegisterControllerResponse) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_MsgRegisterControllerResponse_messageType fastReflection_MsgRegisterControllerResponse_messageType
var _ protoreflect.MessageType = fastReflection_MsgRegisterControllerResponse_messageType{}
type fastReflection_MsgRegisterControllerResponse_messageType struct{}
func (x fastReflection_MsgRegisterControllerResponse_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgRegisterControllerResponse)(nil)
}
func (x fastReflection_MsgRegisterControllerResponse_messageType) New() protoreflect.Message {
return new(fastReflection_MsgRegisterControllerResponse)
}
func (x fastReflection_MsgRegisterControllerResponse_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgRegisterControllerResponse
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MsgRegisterControllerResponse) Descriptor() protoreflect.MessageDescriptor {
return md_MsgRegisterControllerResponse
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MsgRegisterControllerResponse) Type() protoreflect.MessageType {
return _fastReflection_MsgRegisterControllerResponse_messageType
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MsgRegisterControllerResponse) New() protoreflect.Message {
return new(fastReflection_MsgRegisterControllerResponse)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MsgRegisterControllerResponse) Interface() protoreflect.ProtoMessage {
return (*MsgRegisterControllerResponse)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MsgRegisterControllerResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Success != false {
value := protoreflect.ValueOfBool(x.Success)
if !f(fd_MsgRegisterControllerResponse_success, value) {
return
}
}
if x.Controller != "" {
value := protoreflect.ValueOfString(x.Controller)
if !f(fd_MsgRegisterControllerResponse_controller, value) {
return
}
}
if len(x.Accounts) != 0 {
value := protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_3_map{m: &x.Accounts})
if !f(fd_MsgRegisterControllerResponse_accounts, value) {
return
}
}
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MsgRegisterControllerResponse) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
case "did.v1.MsgRegisterControllerResponse.success":
return x.Success != false
case "did.v1.MsgRegisterControllerResponse.controller":
return x.Controller != ""
case "did.v1.MsgRegisterControllerResponse.accounts":
return len(x.Accounts) != 0
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterControllerResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterControllerResponse does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterControllerResponse) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
case "did.v1.MsgRegisterControllerResponse.success":
x.Success = false
case "did.v1.MsgRegisterControllerResponse.controller":
x.Controller = ""
case "did.v1.MsgRegisterControllerResponse.accounts":
x.Accounts = nil
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterControllerResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterControllerResponse does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MsgRegisterControllerResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
case "did.v1.MsgRegisterControllerResponse.success":
value := x.Success
return protoreflect.ValueOfBool(value)
case "did.v1.MsgRegisterControllerResponse.controller":
value := x.Controller
return protoreflect.ValueOfString(value)
case "did.v1.MsgRegisterControllerResponse.accounts":
if len(x.Accounts) == 0 {
return protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_3_map{})
}
mapValue := &_MsgRegisterControllerResponse_3_map{m: &x.Accounts}
return protoreflect.ValueOfMap(mapValue)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterControllerResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterControllerResponse does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterControllerResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
case "did.v1.MsgRegisterControllerResponse.success":
x.Success = value.Bool()
case "did.v1.MsgRegisterControllerResponse.controller":
x.Controller = value.Interface().(string)
case "did.v1.MsgRegisterControllerResponse.accounts":
mv := value.Map()
cmv := mv.(*_MsgRegisterControllerResponse_3_map)
x.Accounts = *cmv.m
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterControllerResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterControllerResponse does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterControllerResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgRegisterControllerResponse.accounts":
if x.Accounts == nil {
x.Accounts = make(map[string]string)
}
value := &_MsgRegisterControllerResponse_3_map{m: &x.Accounts}
return protoreflect.ValueOfMap(value)
case "did.v1.MsgRegisterControllerResponse.success":
panic(fmt.Errorf("field success of message did.v1.MsgRegisterControllerResponse is not mutable"))
case "did.v1.MsgRegisterControllerResponse.controller":
panic(fmt.Errorf("field controller of message did.v1.MsgRegisterControllerResponse is not mutable"))
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterControllerResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterControllerResponse does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MsgRegisterControllerResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgRegisterControllerResponse.success":
return protoreflect.ValueOfBool(false)
case "did.v1.MsgRegisterControllerResponse.controller":
return protoreflect.ValueOfString("")
case "did.v1.MsgRegisterControllerResponse.accounts":
m := make(map[string]string)
return protoreflect.ValueOfMap(&_MsgRegisterControllerResponse_3_map{m: &m})
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterControllerResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterControllerResponse does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MsgRegisterControllerResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgRegisterControllerResponse", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MsgRegisterControllerResponse) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterControllerResponse) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MsgRegisterControllerResponse) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MsgRegisterControllerResponse) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*MsgRegisterControllerResponse)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
if x.Success {
n += 2
}
l = len(x.Controller)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if len(x.Accounts) > 0 {
SiZeMaP := func(k string, v string) {
mapEntrySize := 1 + len(k) + runtime.Sov(uint64(len(k))) + 1 + len(v) + runtime.Sov(uint64(len(v)))
n += mapEntrySize + 1 + runtime.Sov(uint64(mapEntrySize))
}
if options.Deterministic {
sortme := make([]string, 0, len(x.Accounts))
for k := range x.Accounts {
sortme = append(sortme, k)
}
sort.Strings(sortme)
for _, k := range sortme {
v := x.Accounts[k]
SiZeMaP(k, v)
}
} else {
for k, v := range x.Accounts {
SiZeMaP(k, v)
}
}
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*MsgRegisterControllerResponse)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Accounts) > 0 {
MaRsHaLmAp := func(k string, v string) (protoiface.MarshalOutput, error) {
baseI := i
i -= len(v)
copy(dAtA[i:], v)
i = runtime.EncodeVarint(dAtA, i, uint64(len(v)))
i--
dAtA[i] = 0x12
i -= len(k)
copy(dAtA[i:], k)
i = runtime.EncodeVarint(dAtA, i, uint64(len(k)))
i--
dAtA[i] = 0xa
i = runtime.EncodeVarint(dAtA, i, uint64(baseI-i))
i--
dAtA[i] = 0x1a
return protoiface.MarshalOutput{}, nil
}
if options.Deterministic {
keysForAccounts := make([]string, 0, len(x.Accounts))
for k := range x.Accounts {
keysForAccounts = append(keysForAccounts, string(k))
}
sort.Slice(keysForAccounts, func(i, j int) bool {
return keysForAccounts[i] < keysForAccounts[j]
})
for iNdEx := len(keysForAccounts) - 1; iNdEx >= 0; iNdEx-- {
v := x.Accounts[string(keysForAccounts[iNdEx])]
out, err := MaRsHaLmAp(keysForAccounts[iNdEx], v)
if err != nil {
return out, err
}
}
} else {
for k := range x.Accounts {
v := x.Accounts[k]
out, err := MaRsHaLmAp(k, v)
if err != nil {
return out, err
}
}
}
}
if len(x.Controller) > 0 {
i -= len(x.Controller)
copy(dAtA[i:], x.Controller)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller)))
i--
dAtA[i] = 0x12
}
if x.Success {
i--
if x.Success {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x8
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*MsgRegisterControllerResponse)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterControllerResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterControllerResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
x.Success = bool(v != 0)
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Controller = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Accounts", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if x.Accounts == nil {
x.Accounts = make(map[string]string)
}
var mapkey string
var mapvalue string
for iNdEx < postIndex {
entryPreIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
if fieldNum == 1 {
var stringLenmapkey uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLenmapkey |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLenmapkey := int(stringLenmapkey)
if intStringLenmapkey < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postStringIndexmapkey := iNdEx + intStringLenmapkey
if postStringIndexmapkey < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postStringIndexmapkey > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey
} else if fieldNum == 2 {
var stringLenmapvalue uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLenmapvalue |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLenmapvalue := int(stringLenmapvalue)
if intStringLenmapvalue < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
if postStringIndexmapvalue < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postStringIndexmapvalue > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
iNdEx = postStringIndexmapvalue
} else {
iNdEx = entryPreIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > postIndex {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
x.Accounts[mapkey] = mapvalue
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
2024-07-05 22:20:13 -04:00
var (
md_MsgAuthorizeService protoreflect.MessageDescriptor
fd_MsgAuthorizeService_controller protoreflect.FieldDescriptor
fd_MsgAuthorizeService_origin protoreflect.FieldDescriptor
fd_MsgAuthorizeService_scopes protoreflect.FieldDescriptor
fd_MsgAuthorizeService_token protoreflect.FieldDescriptor
2024-07-05 22:20:13 -04:00
)
func init() {
file_did_v1_tx_proto_init()
md_MsgAuthorizeService = File_did_v1_tx_proto.Messages().ByName("MsgAuthorizeService")
fd_MsgAuthorizeService_controller = md_MsgAuthorizeService.Fields().ByName("controller")
fd_MsgAuthorizeService_origin = md_MsgAuthorizeService.Fields().ByName("origin")
fd_MsgAuthorizeService_scopes = md_MsgAuthorizeService.Fields().ByName("scopes")
fd_MsgAuthorizeService_token = md_MsgAuthorizeService.Fields().ByName("token")
2024-07-05 22:20:13 -04:00
}
var _ protoreflect.Message = (*fastReflection_MsgAuthorizeService)(nil)
2024-07-05 22:20:13 -04:00
type fastReflection_MsgAuthorizeService MsgAuthorizeService
2024-07-05 22:20:13 -04:00
func (x *MsgAuthorizeService) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgAuthorizeService)(x)
2024-07-05 22:20:13 -04:00
}
func (x *MsgAuthorizeService) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[6]
2024-07-05 22:20:13 -04:00
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_MsgAuthorizeService_messageType fastReflection_MsgAuthorizeService_messageType
var _ protoreflect.MessageType = fastReflection_MsgAuthorizeService_messageType{}
2024-07-05 22:20:13 -04:00
type fastReflection_MsgAuthorizeService_messageType struct{}
2024-07-05 22:20:13 -04:00
func (x fastReflection_MsgAuthorizeService_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgAuthorizeService)(nil)
2024-07-05 22:20:13 -04:00
}
func (x fastReflection_MsgAuthorizeService_messageType) New() protoreflect.Message {
return new(fastReflection_MsgAuthorizeService)
2024-07-05 22:20:13 -04:00
}
func (x fastReflection_MsgAuthorizeService_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgAuthorizeService
2024-07-05 22:20:13 -04:00
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MsgAuthorizeService) Descriptor() protoreflect.MessageDescriptor {
return md_MsgAuthorizeService
2024-07-05 22:20:13 -04:00
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MsgAuthorizeService) Type() protoreflect.MessageType {
return _fastReflection_MsgAuthorizeService_messageType
2024-07-05 22:20:13 -04:00
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MsgAuthorizeService) New() protoreflect.Message {
return new(fastReflection_MsgAuthorizeService)
2024-07-05 22:20:13 -04:00
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MsgAuthorizeService) Interface() protoreflect.ProtoMessage {
return (*MsgAuthorizeService)(x)
2024-07-05 22:20:13 -04:00
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MsgAuthorizeService) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Controller != "" {
value := protoreflect.ValueOfString(x.Controller)
if !f(fd_MsgAuthorizeService_controller, value) {
2024-07-05 22:20:13 -04:00
return
}
}
if x.Origin != "" {
value := protoreflect.ValueOfString(x.Origin)
if !f(fd_MsgAuthorizeService_origin, value) {
2024-07-05 22:20:13 -04:00
return
}
}
if x.Scopes != nil {
value := protoreflect.ValueOfMessage(x.Scopes.ProtoReflect())
if !f(fd_MsgAuthorizeService_scopes, value) {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return
}
}
if x.Token != "" {
value := protoreflect.ValueOfString(x.Token)
if !f(fd_MsgAuthorizeService_token, value) {
2024-07-05 22:20:13 -04:00
return
}
}
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MsgAuthorizeService) Has(fd protoreflect.FieldDescriptor) bool {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeService.controller":
return x.Controller != ""
case "did.v1.MsgAuthorizeService.origin":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return x.Origin != ""
case "did.v1.MsgAuthorizeService.scopes":
return x.Scopes != nil
case "did.v1.MsgAuthorizeService.token":
return x.Token != ""
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeService"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeService does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgAuthorizeService) Clear(fd protoreflect.FieldDescriptor) {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeService.controller":
x.Controller = ""
case "did.v1.MsgAuthorizeService.origin":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x.Origin = ""
case "did.v1.MsgAuthorizeService.scopes":
x.Scopes = nil
case "did.v1.MsgAuthorizeService.token":
x.Token = ""
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeService"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeService does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MsgAuthorizeService) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
2024-07-05 22:20:13 -04:00
switch descriptor.FullName() {
case "did.v1.MsgAuthorizeService.controller":
value := x.Controller
2024-08-31 12:49:44 -04:00
return protoreflect.ValueOfString(value)
case "did.v1.MsgAuthorizeService.origin":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
value := x.Origin
return protoreflect.ValueOfString(value)
case "did.v1.MsgAuthorizeService.scopes":
value := x.Scopes
return protoreflect.ValueOfMessage(value.ProtoReflect())
case "did.v1.MsgAuthorizeService.token":
value := x.Token
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
return protoreflect.ValueOfString(value)
2024-07-05 22:20:13 -04:00
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeService"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeService does not contain field %s", descriptor.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgAuthorizeService) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeService.controller":
x.Controller = value.Interface().(string)
case "did.v1.MsgAuthorizeService.origin":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x.Origin = value.Interface().(string)
case "did.v1.MsgAuthorizeService.scopes":
x.Scopes = value.Message().Interface().(*Permissions)
case "did.v1.MsgAuthorizeService.token":
x.Token = value.Interface().(string)
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeService"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeService does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgAuthorizeService) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeService.scopes":
if x.Scopes == nil {
x.Scopes = new(Permissions)
}
return protoreflect.ValueOfMessage(x.Scopes.ProtoReflect())
case "did.v1.MsgAuthorizeService.controller":
panic(fmt.Errorf("field controller of message did.v1.MsgAuthorizeService is not mutable"))
case "did.v1.MsgAuthorizeService.origin":
panic(fmt.Errorf("field origin of message did.v1.MsgAuthorizeService is not mutable"))
case "did.v1.MsgAuthorizeService.token":
panic(fmt.Errorf("field token of message did.v1.MsgAuthorizeService is not mutable"))
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeService"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeService does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MsgAuthorizeService) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeService.controller":
2024-08-31 12:49:44 -04:00
return protoreflect.ValueOfString("")
case "did.v1.MsgAuthorizeService.origin":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoreflect.ValueOfString("")
case "did.v1.MsgAuthorizeService.scopes":
m := new(Permissions)
return protoreflect.ValueOfMessage(m.ProtoReflect())
case "did.v1.MsgAuthorizeService.token":
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
return protoreflect.ValueOfString("")
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeService"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeService does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MsgAuthorizeService) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
2024-07-05 22:20:13 -04:00
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAuthorizeService", d.FullName()))
2024-07-05 22:20:13 -04:00
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MsgAuthorizeService) GetUnknown() protoreflect.RawFields {
2024-07-05 22:20:13 -04:00
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgAuthorizeService) SetUnknown(fields protoreflect.RawFields) {
2024-07-05 22:20:13 -04:00
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MsgAuthorizeService) IsValid() bool {
2024-07-05 22:20:13 -04:00
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MsgAuthorizeService) ProtoMethods() *protoiface.Methods {
2024-07-05 22:20:13 -04:00
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*MsgAuthorizeService)
2024-07-05 22:20:13 -04:00
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
l = len(x.Controller)
2024-07-05 22:20:13 -04:00
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
l = len(x.Origin)
2024-08-31 12:49:44 -04:00
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
2024-07-05 22:20:13 -04:00
}
if x.Scopes != nil {
l = options.Size(x.Scopes)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
n += 1 + l + runtime.Sov(uint64(l))
2024-07-05 22:20:13 -04:00
}
l = len(x.Token)
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
if l > 0 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
n += 1 + l + runtime.Sov(uint64(l))
}
2024-07-05 22:20:13 -04:00
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*MsgAuthorizeService)
2024-07-05 22:20:13 -04:00
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Token) > 0 {
i -= len(x.Token)
copy(dAtA[i:], x.Token)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token)))
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
i--
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
dAtA[i] = 0x22
2024-07-05 22:20:13 -04:00
}
if x.Scopes != nil {
encoded, err := options.Marshal(x.Scopes)
if err != nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, err
}
i -= len(encoded)
copy(dAtA[i:], encoded)
i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
i--
dAtA[i] = 0x1a
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if len(x.Origin) > 0 {
i -= len(x.Origin)
copy(dAtA[i:], x.Origin)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Origin)))
i--
2024-08-31 12:49:44 -04:00
dAtA[i] = 0x12
2024-07-05 22:20:13 -04:00
}
if len(x.Controller) > 0 {
i -= len(x.Controller)
copy(dAtA[i:], x.Controller)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller)))
2024-07-05 22:20:13 -04:00
i--
dAtA[i] = 0xa
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*MsgAuthorizeService)
2024-07-05 22:20:13 -04:00
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthorizeService: wiretype end group for non-group")
2024-07-05 22:20:13 -04:00
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthorizeService: illegal tag %d (wire type %d)", fieldNum, wire)
2024-07-05 22:20:13 -04:00
}
switch fieldNum {
case 1:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType)
2024-07-05 22:20:13 -04:00
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Controller = string(dAtA[iNdEx:postIndex])
2024-07-05 22:20:13 -04:00
iNdEx = postIndex
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Origin", wireType)
2024-07-05 22:20:13 -04:00
}
2024-08-31 12:49:44 -04:00
var stringLen uint64
2024-07-05 22:20:13 -04:00
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
2024-08-31 12:49:44 -04:00
stringLen |= uint64(b&0x7F) << shift
2024-07-05 22:20:13 -04:00
if b < 0x80 {
break
}
}
2024-08-31 12:49:44 -04:00
intStringLen := int(stringLen)
if intStringLen < 0 {
2024-07-05 22:20:13 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
2024-08-31 12:49:44 -04:00
postIndex := iNdEx + intStringLen
2024-07-05 22:20:13 -04:00
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Origin = string(dAtA[iNdEx:postIndex])
2024-07-05 22:20:13 -04:00
iNdEx = postIndex
case 3:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Scopes", wireType)
2024-07-05 22:20:13 -04:00
}
var msglen int
2024-07-05 22:20:13 -04:00
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
2024-07-05 22:20:13 -04:00
if b < 0x80 {
break
}
}
if msglen < 0 {
2024-07-05 22:20:13 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + msglen
2024-07-05 22:20:13 -04:00
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if x.Scopes == nil {
x.Scopes = &Permissions{}
}
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Scopes); err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType)
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
var stringLen uint64
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
stringLen |= uint64(b&0x7F) << shift
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if b < 0x80 {
break
}
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
intStringLen := int(stringLen)
if intStringLen < 0 {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
postIndex := iNdEx + intStringLen
2024-07-05 22:20:13 -04:00
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Token = string(dAtA[iNdEx:postIndex])
2024-07-05 22:20:13 -04:00
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
var (
md_MsgAuthorizeServiceResponse protoreflect.MessageDescriptor
fd_MsgAuthorizeServiceResponse_success protoreflect.FieldDescriptor
fd_MsgAuthorizeServiceResponse_token protoreflect.FieldDescriptor
2024-07-05 22:20:13 -04:00
)
func init() {
file_did_v1_tx_proto_init()
md_MsgAuthorizeServiceResponse = File_did_v1_tx_proto.Messages().ByName("MsgAuthorizeServiceResponse")
fd_MsgAuthorizeServiceResponse_success = md_MsgAuthorizeServiceResponse.Fields().ByName("success")
fd_MsgAuthorizeServiceResponse_token = md_MsgAuthorizeServiceResponse.Fields().ByName("token")
2024-07-05 22:20:13 -04:00
}
var _ protoreflect.Message = (*fastReflection_MsgAuthorizeServiceResponse)(nil)
2024-07-05 22:20:13 -04:00
type fastReflection_MsgAuthorizeServiceResponse MsgAuthorizeServiceResponse
2024-07-05 22:20:13 -04:00
func (x *MsgAuthorizeServiceResponse) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgAuthorizeServiceResponse)(x)
2024-07-05 22:20:13 -04:00
}
func (x *MsgAuthorizeServiceResponse) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[7]
2024-07-05 22:20:13 -04:00
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_MsgAuthorizeServiceResponse_messageType fastReflection_MsgAuthorizeServiceResponse_messageType
var _ protoreflect.MessageType = fastReflection_MsgAuthorizeServiceResponse_messageType{}
2024-07-05 22:20:13 -04:00
type fastReflection_MsgAuthorizeServiceResponse_messageType struct{}
2024-07-05 22:20:13 -04:00
func (x fastReflection_MsgAuthorizeServiceResponse_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgAuthorizeServiceResponse)(nil)
2024-07-05 22:20:13 -04:00
}
func (x fastReflection_MsgAuthorizeServiceResponse_messageType) New() protoreflect.Message {
return new(fastReflection_MsgAuthorizeServiceResponse)
2024-07-05 22:20:13 -04:00
}
func (x fastReflection_MsgAuthorizeServiceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgAuthorizeServiceResponse
2024-07-05 22:20:13 -04:00
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MsgAuthorizeServiceResponse) Descriptor() protoreflect.MessageDescriptor {
return md_MsgAuthorizeServiceResponse
2024-07-05 22:20:13 -04:00
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MsgAuthorizeServiceResponse) Type() protoreflect.MessageType {
return _fastReflection_MsgAuthorizeServiceResponse_messageType
2024-07-05 22:20:13 -04:00
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MsgAuthorizeServiceResponse) New() protoreflect.Message {
return new(fastReflection_MsgAuthorizeServiceResponse)
2024-07-05 22:20:13 -04:00
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MsgAuthorizeServiceResponse) Interface() protoreflect.ProtoMessage {
return (*MsgAuthorizeServiceResponse)(x)
2024-07-05 22:20:13 -04:00
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MsgAuthorizeServiceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x.Success != false {
value := protoreflect.ValueOfBool(x.Success)
if !f(fd_MsgAuthorizeServiceResponse_success, value) {
return
}
}
if x.Token != "" {
value := protoreflect.ValueOfString(x.Token)
if !f(fd_MsgAuthorizeServiceResponse_token, value) {
2024-07-05 22:20:13 -04:00
return
}
}
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MsgAuthorizeServiceResponse) Has(fd protoreflect.FieldDescriptor) bool {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeServiceResponse.success":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return x.Success != false
case "did.v1.MsgAuthorizeServiceResponse.token":
return x.Token != ""
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeServiceResponse"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeServiceResponse does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgAuthorizeServiceResponse) Clear(fd protoreflect.FieldDescriptor) {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeServiceResponse.success":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x.Success = false
case "did.v1.MsgAuthorizeServiceResponse.token":
x.Token = ""
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeServiceResponse"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeServiceResponse does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MsgAuthorizeServiceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
2024-07-05 22:20:13 -04:00
switch descriptor.FullName() {
case "did.v1.MsgAuthorizeServiceResponse.success":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
value := x.Success
return protoreflect.ValueOfBool(value)
case "did.v1.MsgAuthorizeServiceResponse.token":
value := x.Token
2024-07-05 22:20:13 -04:00
return protoreflect.ValueOfString(value)
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeServiceResponse"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeServiceResponse does not contain field %s", descriptor.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgAuthorizeServiceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeServiceResponse.success":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
x.Success = value.Bool()
case "did.v1.MsgAuthorizeServiceResponse.token":
x.Token = value.Interface().(string)
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeServiceResponse"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeServiceResponse does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgAuthorizeServiceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeServiceResponse.success":
panic(fmt.Errorf("field success of message did.v1.MsgAuthorizeServiceResponse is not mutable"))
case "did.v1.MsgAuthorizeServiceResponse.token":
panic(fmt.Errorf("field token of message did.v1.MsgAuthorizeServiceResponse is not mutable"))
2024-07-05 22:20:13 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeServiceResponse"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeServiceResponse does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MsgAuthorizeServiceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
2024-07-05 22:20:13 -04:00
switch fd.FullName() {
case "did.v1.MsgAuthorizeServiceResponse.success":
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoreflect.ValueOfBool(false)
case "did.v1.MsgAuthorizeServiceResponse.token":
2024-07-05 22:20:13 -04:00
return protoreflect.ValueOfString("")
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgAuthorizeServiceResponse"))
2024-07-05 22:20:13 -04:00
}
panic(fmt.Errorf("message did.v1.MsgAuthorizeServiceResponse does not contain field %s", fd.FullName()))
2024-07-05 22:20:13 -04:00
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MsgAuthorizeServiceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
2024-07-05 22:20:13 -04:00
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgAuthorizeServiceResponse", d.FullName()))
2024-07-05 22:20:13 -04:00
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MsgAuthorizeServiceResponse) GetUnknown() protoreflect.RawFields {
2024-07-05 22:20:13 -04:00
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgAuthorizeServiceResponse) SetUnknown(fields protoreflect.RawFields) {
2024-07-05 22:20:13 -04:00
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MsgAuthorizeServiceResponse) IsValid() bool {
2024-07-05 22:20:13 -04:00
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MsgAuthorizeServiceResponse) ProtoMethods() *protoiface.Methods {
2024-07-05 22:20:13 -04:00
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*MsgAuthorizeServiceResponse)
2024-07-05 22:20:13 -04:00
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x.Success {
n += 2
}
l = len(x.Token)
2024-07-05 22:20:13 -04:00
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*MsgAuthorizeServiceResponse)
2024-07-05 22:20:13 -04:00
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Token) > 0 {
i -= len(x.Token)
copy(dAtA[i:], x.Token)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Token)))
2024-07-05 22:20:13 -04:00
i--
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
dAtA[i] = 0x12
}
if x.Success {
i--
if x.Success {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x8
2024-07-05 22:20:13 -04:00
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*MsgAuthorizeServiceResponse)
2024-07-05 22:20:13 -04:00
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthorizeServiceResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgAuthorizeServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
}
x.Success = bool(v != 0)
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Token", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Token = string(dAtA[iNdEx:postIndex])
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
var (
md_MsgRegisterService protoreflect.MessageDescriptor
fd_MsgRegisterService_controller protoreflect.FieldDescriptor
fd_MsgRegisterService_service protoreflect.FieldDescriptor
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
)
func init() {
file_did_v1_tx_proto_init()
md_MsgRegisterService = File_did_v1_tx_proto.Messages().ByName("MsgRegisterService")
fd_MsgRegisterService_controller = md_MsgRegisterService.Fields().ByName("controller")
fd_MsgRegisterService_service = md_MsgRegisterService.Fields().ByName("service")
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
var _ protoreflect.Message = (*fastReflection_MsgRegisterService)(nil)
type fastReflection_MsgRegisterService MsgRegisterService
func (x *MsgRegisterService) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgRegisterService)(x)
}
func (x *MsgRegisterService) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[8]
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_MsgRegisterService_messageType fastReflection_MsgRegisterService_messageType
var _ protoreflect.MessageType = fastReflection_MsgRegisterService_messageType{}
type fastReflection_MsgRegisterService_messageType struct{}
func (x fastReflection_MsgRegisterService_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgRegisterService)(nil)
}
func (x fastReflection_MsgRegisterService_messageType) New() protoreflect.Message {
return new(fastReflection_MsgRegisterService)
}
func (x fastReflection_MsgRegisterService_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgRegisterService
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MsgRegisterService) Descriptor() protoreflect.MessageDescriptor {
return md_MsgRegisterService
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MsgRegisterService) Type() protoreflect.MessageType {
return _fastReflection_MsgRegisterService_messageType
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MsgRegisterService) New() protoreflect.Message {
return new(fastReflection_MsgRegisterService)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MsgRegisterService) Interface() protoreflect.ProtoMessage {
return (*MsgRegisterService)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MsgRegisterService) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Controller != "" {
value := protoreflect.ValueOfString(x.Controller)
if !f(fd_MsgRegisterService_controller, value) {
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
return
}
}
if x.Service != nil {
value := protoreflect.ValueOfMessage(x.Service.ProtoReflect())
if !f(fd_MsgRegisterService_service, value) {
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
return
}
}
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MsgRegisterService) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
case "did.v1.MsgRegisterService.controller":
return x.Controller != ""
case "did.v1.MsgRegisterService.service":
return x.Service != nil
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterService does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterService) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
case "did.v1.MsgRegisterService.controller":
x.Controller = ""
case "did.v1.MsgRegisterService.service":
x.Service = nil
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterService does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MsgRegisterService) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
case "did.v1.MsgRegisterService.controller":
value := x.Controller
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
return protoreflect.ValueOfString(value)
case "did.v1.MsgRegisterService.service":
value := x.Service
return protoreflect.ValueOfMessage(value.ProtoReflect())
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterService does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterService) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
case "did.v1.MsgRegisterService.controller":
x.Controller = value.Interface().(string)
case "did.v1.MsgRegisterService.service":
x.Service = value.Message().Interface().(*Service)
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterService does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterService) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgRegisterService.service":
if x.Service == nil {
x.Service = new(Service)
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
return protoreflect.ValueOfMessage(x.Service.ProtoReflect())
case "did.v1.MsgRegisterService.controller":
panic(fmt.Errorf("field controller of message did.v1.MsgRegisterService is not mutable"))
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterService does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MsgRegisterService) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgRegisterService.controller":
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
return protoreflect.ValueOfString("")
case "did.v1.MsgRegisterService.service":
m := new(Service)
return protoreflect.ValueOfMessage(m.ProtoReflect())
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterService"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterService does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MsgRegisterService) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgRegisterService", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MsgRegisterService) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterService) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MsgRegisterService) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MsgRegisterService) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*MsgRegisterService)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
l = len(x.Controller)
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
if x.Service != nil {
l = options.Size(x.Service)
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
n += 1 + l + runtime.Sov(uint64(l))
}
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*MsgRegisterService)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if x.Service != nil {
encoded, err := options.Marshal(x.Service)
if err != nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, err
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
i -= len(encoded)
copy(dAtA[i:], encoded)
i = runtime.EncodeVarint(dAtA, i, uint64(len(encoded)))
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
i--
dAtA[i] = 0x12
}
if len(x.Controller) > 0 {
i -= len(x.Controller)
copy(dAtA[i:], x.Controller)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Controller)))
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
i--
dAtA[i] = 0xa
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*MsgRegisterService)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterService: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterService: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType)
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Controller = string(dAtA[iNdEx:postIndex])
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
iNdEx = postIndex
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Service", wireType)
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
var msglen int
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if b < 0x80 {
break
}
}
if msglen < 0 {
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + msglen
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if x.Service == nil {
x.Service = &Service{}
}
if err := options.Unmarshal(dAtA[iNdEx:postIndex], x.Service); err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
iNdEx = postIndex
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
var (
md_MsgRegisterServiceResponse protoreflect.MessageDescriptor
fd_MsgRegisterServiceResponse_success protoreflect.FieldDescriptor
fd_MsgRegisterServiceResponse_did protoreflect.FieldDescriptor
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
)
func init() {
file_did_v1_tx_proto_init()
md_MsgRegisterServiceResponse = File_did_v1_tx_proto.Messages().ByName("MsgRegisterServiceResponse")
fd_MsgRegisterServiceResponse_success = md_MsgRegisterServiceResponse.Fields().ByName("success")
fd_MsgRegisterServiceResponse_did = md_MsgRegisterServiceResponse.Fields().ByName("did")
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
var _ protoreflect.Message = (*fastReflection_MsgRegisterServiceResponse)(nil)
type fastReflection_MsgRegisterServiceResponse MsgRegisterServiceResponse
func (x *MsgRegisterServiceResponse) ProtoReflect() protoreflect.Message {
return (*fastReflection_MsgRegisterServiceResponse)(x)
}
func (x *MsgRegisterServiceResponse) slowProtoReflect() protoreflect.Message {
mi := &file_did_v1_tx_proto_msgTypes[9]
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
var _fastReflection_MsgRegisterServiceResponse_messageType fastReflection_MsgRegisterServiceResponse_messageType
var _ protoreflect.MessageType = fastReflection_MsgRegisterServiceResponse_messageType{}
type fastReflection_MsgRegisterServiceResponse_messageType struct{}
func (x fastReflection_MsgRegisterServiceResponse_messageType) Zero() protoreflect.Message {
return (*fastReflection_MsgRegisterServiceResponse)(nil)
}
func (x fastReflection_MsgRegisterServiceResponse_messageType) New() protoreflect.Message {
return new(fastReflection_MsgRegisterServiceResponse)
}
func (x fastReflection_MsgRegisterServiceResponse_messageType) Descriptor() protoreflect.MessageDescriptor {
return md_MsgRegisterServiceResponse
}
// Descriptor returns message descriptor, which contains only the protobuf
// type information for the message.
func (x *fastReflection_MsgRegisterServiceResponse) Descriptor() protoreflect.MessageDescriptor {
return md_MsgRegisterServiceResponse
}
// Type returns the message type, which encapsulates both Go and protobuf
// type information. If the Go type information is not needed,
// it is recommended that the message descriptor be used instead.
func (x *fastReflection_MsgRegisterServiceResponse) Type() protoreflect.MessageType {
return _fastReflection_MsgRegisterServiceResponse_messageType
}
// New returns a newly allocated and mutable empty message.
func (x *fastReflection_MsgRegisterServiceResponse) New() protoreflect.Message {
return new(fastReflection_MsgRegisterServiceResponse)
}
// Interface unwraps the message reflection interface and
// returns the underlying ProtoMessage interface.
func (x *fastReflection_MsgRegisterServiceResponse) Interface() protoreflect.ProtoMessage {
return (*MsgRegisterServiceResponse)(x)
}
// Range iterates over every populated field in an undefined order,
// calling f for each field descriptor and value encountered.
// Range returns immediately if f returns false.
// While iterating, mutating operations may only be performed
// on the current field descriptor.
func (x *fastReflection_MsgRegisterServiceResponse) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if x.Success != false {
value := protoreflect.ValueOfBool(x.Success)
if !f(fd_MsgRegisterServiceResponse_success, value) {
return
}
}
if x.Did != "" {
value := protoreflect.ValueOfString(x.Did)
if !f(fd_MsgRegisterServiceResponse_did, value) {
return
}
}
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
// Has reports whether a field is populated.
//
// Some fields have the property of nullability where it is possible to
// distinguish between the default value of a field and whether the field
// was explicitly populated with the default value. Singular message fields,
// member fields of a oneof, and proto2 scalar fields are nullable. Such
// fields are populated only if explicitly set.
//
// In other cases (aside from the nullable cases above),
// a proto3 scalar field is populated if it contains a non-zero value, and
// a repeated field is populated if it is non-empty.
func (x *fastReflection_MsgRegisterServiceResponse) Has(fd protoreflect.FieldDescriptor) bool {
switch fd.FullName() {
case "did.v1.MsgRegisterServiceResponse.success":
return x.Success != false
case "did.v1.MsgRegisterServiceResponse.did":
return x.Did != ""
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterServiceResponse does not contain field %s", fd.FullName()))
}
}
// Clear clears the field such that a subsequent Has call reports false.
//
// Clearing an extension field clears both the extension type and value
// associated with the given field number.
//
// Clear is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterServiceResponse) Clear(fd protoreflect.FieldDescriptor) {
switch fd.FullName() {
case "did.v1.MsgRegisterServiceResponse.success":
x.Success = false
case "did.v1.MsgRegisterServiceResponse.did":
x.Did = ""
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterServiceResponse does not contain field %s", fd.FullName()))
}
}
// Get retrieves the value for a field.
//
// For unpopulated scalars, it returns the default value, where
// the default value of a bytes scalar is guaranteed to be a copy.
// For unpopulated composite types, it returns an empty, read-only view
// of the value; to obtain a mutable reference, use Mutable.
func (x *fastReflection_MsgRegisterServiceResponse) Get(descriptor protoreflect.FieldDescriptor) protoreflect.Value {
switch descriptor.FullName() {
case "did.v1.MsgRegisterServiceResponse.success":
value := x.Success
return protoreflect.ValueOfBool(value)
case "did.v1.MsgRegisterServiceResponse.did":
value := x.Did
return protoreflect.ValueOfString(value)
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if descriptor.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterServiceResponse does not contain field %s", descriptor.FullName()))
}
}
// Set stores the value for a field.
//
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType.
// When setting a composite type, it is unspecified whether the stored value
// aliases the source's memory in any way. If the composite value is an
// empty, read-only value, then it panics.
//
// Set is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterServiceResponse) Set(fd protoreflect.FieldDescriptor, value protoreflect.Value) {
switch fd.FullName() {
case "did.v1.MsgRegisterServiceResponse.success":
x.Success = value.Bool()
case "did.v1.MsgRegisterServiceResponse.did":
x.Did = value.Interface().(string)
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterServiceResponse does not contain field %s", fd.FullName()))
}
}
// Mutable returns a mutable reference to a composite type.
//
// If the field is unpopulated, it may allocate a composite value.
// For a field belonging to a oneof, it implicitly clears any other field
// that may be currently set within the same oneof.
// For extension fields, it implicitly stores the provided ExtensionType
// if not already stored.
// It panics if the field does not contain a composite type.
//
// Mutable is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterServiceResponse) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgRegisterServiceResponse.success":
panic(fmt.Errorf("field success of message did.v1.MsgRegisterServiceResponse is not mutable"))
case "did.v1.MsgRegisterServiceResponse.did":
panic(fmt.Errorf("field did of message did.v1.MsgRegisterServiceResponse is not mutable"))
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterServiceResponse does not contain field %s", fd.FullName()))
}
}
// NewField returns a new value that is assignable to the field
// for the given descriptor. For scalars, this returns the default value.
// For lists, maps, and messages, this returns a new, empty, mutable value.
func (x *fastReflection_MsgRegisterServiceResponse) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
switch fd.FullName() {
case "did.v1.MsgRegisterServiceResponse.success":
return protoreflect.ValueOfBool(false)
case "did.v1.MsgRegisterServiceResponse.did":
return protoreflect.ValueOfString("")
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
if fd.IsExtension() {
panic(fmt.Errorf("proto3 declared messages do not support extensions: did.v1.MsgRegisterServiceResponse"))
}
panic(fmt.Errorf("message did.v1.MsgRegisterServiceResponse does not contain field %s", fd.FullName()))
}
}
// WhichOneof reports which field within the oneof is populated,
// returning nil if none are populated.
// It panics if the oneof descriptor does not belong to this message.
func (x *fastReflection_MsgRegisterServiceResponse) WhichOneof(d protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
switch d.FullName() {
default:
panic(fmt.Errorf("%s is not a oneof field in did.v1.MsgRegisterServiceResponse", d.FullName()))
}
panic("unreachable")
}
// GetUnknown retrieves the entire list of unknown fields.
// The caller may only mutate the contents of the RawFields
// if the mutated bytes are stored back into the message with SetUnknown.
func (x *fastReflection_MsgRegisterServiceResponse) GetUnknown() protoreflect.RawFields {
return x.unknownFields
}
// SetUnknown stores an entire list of unknown fields.
// The raw fields must be syntactically valid according to the wire format.
// An implementation may panic if this is not the case.
// Once stored, the caller must not mutate the content of the RawFields.
// An empty RawFields may be passed to clear the fields.
//
// SetUnknown is a mutating operation and unsafe for concurrent use.
func (x *fastReflection_MsgRegisterServiceResponse) SetUnknown(fields protoreflect.RawFields) {
x.unknownFields = fields
}
// IsValid reports whether the message is valid.
//
// An invalid message is an empty, read-only value.
//
// An invalid message often corresponds to a nil pointer of the concrete
// message type, but the details are implementation dependent.
// Validity is not part of the protobuf data model, and may not
// be preserved in marshaling or other operations.
func (x *fastReflection_MsgRegisterServiceResponse) IsValid() bool {
return x != nil
}
// ProtoMethods returns optional fastReflectionFeature-path implementations of various operations.
// This method may return nil.
//
// The returned methods type is identical to
// "google.golang.org/protobuf/runtime/protoiface".Methods.
// Consult the protoiface package documentation for details.
func (x *fastReflection_MsgRegisterServiceResponse) ProtoMethods() *protoiface.Methods {
size := func(input protoiface.SizeInput) protoiface.SizeOutput {
x := input.Message.Interface().(*MsgRegisterServiceResponse)
if x == nil {
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: 0,
}
}
options := runtime.SizeInputToOptions(input)
_ = options
var n int
var l int
_ = l
if x.Success {
n += 2
}
l = len(x.Did)
if l > 0 {
n += 1 + l + runtime.Sov(uint64(l))
}
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if x.unknownFields != nil {
n += len(x.unknownFields)
}
return protoiface.SizeOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Size: n,
}
}
marshal := func(input protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
x := input.Message.Interface().(*MsgRegisterServiceResponse)
if x == nil {
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
options := runtime.MarshalInputToOptions(input)
_ = options
size := options.Size(x)
dAtA := make([]byte, size)
i := len(dAtA)
_ = i
var l int
_ = l
if x.unknownFields != nil {
i -= len(x.unknownFields)
copy(dAtA[i:], x.unknownFields)
}
if len(x.Did) > 0 {
i -= len(x.Did)
copy(dAtA[i:], x.Did)
i = runtime.EncodeVarint(dAtA, i, uint64(len(x.Did)))
i--
dAtA[i] = 0x12
}
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if x.Success {
i--
if x.Success {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x8
}
if input.Buf != nil {
input.Buf = append(input.Buf, dAtA...)
} else {
input.Buf = dAtA
}
return protoiface.MarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Buf: input.Buf,
}, nil
}
unmarshal := func(input protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
x := input.Message.Interface().(*MsgRegisterServiceResponse)
if x == nil {
return protoiface.UnmarshalOutput{
NoUnkeyedLiterals: input.NoUnkeyedLiterals,
Flags: input.Flags,
}, nil
}
options := runtime.UnmarshalInputToOptions(input)
_ = options
dAtA := input.Buf
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterServiceResponse: wiretype end group for non-group")
}
if fieldNum <= 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: MsgRegisterServiceResponse: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Success", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
x.Success = bool(v != 0)
case 2:
if wireType != 2 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field Did", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow
}
if iNdEx >= l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if postIndex > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
x.Did = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
default:
iNdEx = preIndex
skippy, err := runtime.Skip(dAtA[iNdEx:])
if err != nil {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength
}
if (iNdEx + skippy) > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
if !options.DiscardUnknown {
x.unknownFields = append(x.unknownFields, dAtA[iNdEx:iNdEx+skippy]...)
}
iNdEx += skippy
}
}
if iNdEx > l {
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF
}
return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, nil
}
return &protoiface.Methods{
NoUnkeyedLiterals: struct{}{},
Flags: protoiface.SupportMarshalDeterministic | protoiface.SupportUnmarshalDiscardUnknown,
Size: size,
Marshal: marshal,
Unmarshal: unmarshal,
Merge: nil,
CheckInitialized: nil,
}
}
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.0
// protoc (unknown)
// source: did/v1/tx.proto
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
2024-09-14 14:27:27 -04:00
// MsgUpdateParams is the Msg/UpdateParams request type.
//
// Since: cosmos-sdk 0.47
type MsgUpdateParams struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// authority is the address of the governance account.
Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"`
// params defines the parameters to update.
Params *Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params,omitempty"`
// token is the macron token to authenticate the operation.
Token string `protobuf:"bytes,3,opt,name=token,proto3" json:"token,omitempty"`
}
func (x *MsgUpdateParams) Reset() {
*x = MsgUpdateParams{}
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MsgUpdateParams) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MsgUpdateParams) ProtoMessage() {}
// Deprecated: Use MsgUpdateParams.ProtoReflect.Descriptor instead.
func (*MsgUpdateParams) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{0}
}
func (x *MsgUpdateParams) GetAuthority() string {
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if x != nil {
return x.Authority
}
return ""
}
func (x *MsgUpdateParams) GetParams() *Params {
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if x != nil {
return x.Params
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
return nil
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
func (x *MsgUpdateParams) GetToken() string {
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
if x != nil {
return x.Token
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
return ""
}
// MsgUpdateParamsResponse defines the response structure for executing a
// MsgUpdateParams message.
//
// Since: cosmos-sdk 0.47
type MsgUpdateParamsResponse struct {
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *MsgUpdateParamsResponse) Reset() {
*x = MsgUpdateParamsResponse{}
2024-07-05 22:20:13 -04:00
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[1]
2024-07-05 22:20:13 -04:00
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MsgUpdateParamsResponse) String() string {
2024-07-05 22:20:13 -04:00
return protoimpl.X.MessageStringOf(x)
}
func (*MsgUpdateParamsResponse) ProtoMessage() {}
2024-07-05 22:20:13 -04:00
// Deprecated: Use MsgUpdateParamsResponse.ProtoReflect.Descriptor instead.
func (*MsgUpdateParamsResponse) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{1}
2024-07-05 22:20:13 -04:00
}
// MsgAllocateVault is the message type for the AllocateVault RPC.
type MsgAllocateVault struct {
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// authority is the address of the service account.
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"`
// subject is a unique human-defined identifier to associate with the vault.
Subject string `protobuf:"bytes,2,opt,name=subject,proto3" json:"subject,omitempty"`
// origin is the origin of the request in wildcard form.
Origin string `protobuf:"bytes,3,opt,name=origin,proto3" json:"origin,omitempty"`
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
}
func (x *MsgAllocateVault) Reset() {
*x = MsgAllocateVault{}
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MsgAllocateVault) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MsgAllocateVault) ProtoMessage() {}
// Deprecated: Use MsgAllocateVault.ProtoReflect.Descriptor instead.
func (*MsgAllocateVault) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{2}
}
func (x *MsgAllocateVault) GetAuthority() string {
if x != nil {
return x.Authority
}
return ""
}
func (x *MsgAllocateVault) GetSubject() string {
if x != nil {
return x.Subject
}
return ""
}
func (x *MsgAllocateVault) GetOrigin() string {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x != nil {
return x.Origin
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
return ""
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
// MsgAllocateVaultResponse is the response type for the AllocateVault RPC.
type MsgAllocateVaultResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// CID is the content identifier of the vault.
Cid string `protobuf:"bytes,1,opt,name=cid,proto3" json:"cid,omitempty"`
// ExpiryBlock is the block number at which the vault will expire.
ExpiryBlock int64 `protobuf:"varint,2,opt,name=expiry_block,json=expiryBlock,proto3" json:"expiry_block,omitempty"`
// RegistrationOptions is a json string of the PublicKeyCredentialCreationOptions for WebAuthn
RegistrationOptions string `protobuf:"bytes,3,opt,name=registration_options,json=registrationOptions,proto3" json:"registration_options,omitempty"`
// IsLocalhost is a flag to indicate if the vault is localhost
Localhost bool `protobuf:"varint,4,opt,name=localhost,proto3" json:"localhost,omitempty"`
}
func (x *MsgAllocateVaultResponse) Reset() {
*x = MsgAllocateVaultResponse{}
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MsgAllocateVaultResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MsgAllocateVaultResponse) ProtoMessage() {}
// Deprecated: Use MsgAllocateVaultResponse.ProtoReflect.Descriptor instead.
func (*MsgAllocateVaultResponse) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{3}
}
func (x *MsgAllocateVaultResponse) GetCid() string {
if x != nil {
return x.Cid
}
return ""
}
func (x *MsgAllocateVaultResponse) GetExpiryBlock() int64 {
if x != nil {
return x.ExpiryBlock
}
return 0
}
func (x *MsgAllocateVaultResponse) GetRegistrationOptions() string {
if x != nil {
return x.RegistrationOptions
}
return ""
}
func (x *MsgAllocateVaultResponse) GetLocalhost() bool {
if x != nil {
return x.Localhost
}
return false
}
// MsgRegisterController is the message type for the InitializeController RPC.
type MsgRegisterController struct {
2024-07-05 22:20:13 -04:00
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// authority is the address of the governance account.
Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"`
// Assertions is the list of assertions to initialize the controller with.
Assertions [][]byte `protobuf:"bytes,2,rep,name=assertions,proto3" json:"assertions,omitempty"`
// Keyshares is the list of keyshares to initialize the controller with.
Keyshares [][]byte `protobuf:"bytes,3,rep,name=keyshares,proto3" json:"keyshares,omitempty"`
// Verifications is the list of verifications to initialize the controller with.
Verifications [][]byte `protobuf:"bytes,4,rep,name=verifications,proto3" json:"verifications,omitempty"`
}
func (x *MsgRegisterController) Reset() {
*x = MsgRegisterController{}
2024-07-05 22:20:13 -04:00
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[4]
2024-07-05 22:20:13 -04:00
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MsgRegisterController) String() string {
2024-07-05 22:20:13 -04:00
return protoimpl.X.MessageStringOf(x)
}
func (*MsgRegisterController) ProtoMessage() {}
2024-07-05 22:20:13 -04:00
// Deprecated: Use MsgRegisterController.ProtoReflect.Descriptor instead.
func (*MsgRegisterController) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{4}
2024-07-05 22:20:13 -04:00
}
func (x *MsgRegisterController) GetAuthority() string {
2024-07-05 22:20:13 -04:00
if x != nil {
return x.Authority
}
return ""
}
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
func (x *MsgRegisterController) GetAssertions() [][]byte {
2024-07-05 22:20:13 -04:00
if x != nil {
return x.Assertions
}
return nil
}
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
func (x *MsgRegisterController) GetKeyshares() [][]byte {
2024-07-05 22:20:13 -04:00
if x != nil {
return x.Keyshares
}
return nil
}
feat: add enums.pulsar.go file for PermissionScope enum (#4) * feat: add enums.pulsar.go file for PermissionScope enum * refactor: remove PERMISSION_SCOPE_IDENTIFIERS_ENS enum value * feat: Add MsgRegisterService to handle service registration The commit message for these changes would be: feat: Add MsgRegisterService to handle service registration This commit adds a new message type `MsgRegisterService` to the DID module's transaction proto file. This message allows users to register a new service with a given permission scope and origin URI. The domain must have a valid TXT record containing the public key. The changes include: - Adding the `MsgRegisterService` message type with fields for authority, origin URI, and scopes - Adding the `MsgRegisterServiceResponse` message type to handle the response - Updating the Msg service to include a new `RegisterService` RPC method - Implementing the `RegisterService` method in the keeper This feature allows users to register new services on the DID chain, which is an important part of the overall DID functionality. * (no commit message provided) * fix: Add ProveWitness and SyncVault RPCs The commit message should be: feat: Add ProveWitness and SyncVault RPCs This change adds two new RPCs to the DID module: 1. ProveWitness: An operation to prove the controller has a valid property using ZK Accumulators. 2. SyncVault: Synchronizes the controller with the Vault Motr DWN WASM Wallet. These new RPCs allow for more advanced DID management functionality. * fix: Remove unused `Meta` message from `genesis.proto` * refactor: Simplify the types and properties to keep a consistent structure for the blockchain * (no commit message provided) * {} * feat: add Equal methods for AssetInfo and ChainInfo types
2024-08-10 18:27:11 -04:00
func (x *MsgRegisterController) GetVerifications() [][]byte {
2024-07-05 22:20:13 -04:00
if x != nil {
return x.Verifications
}
return nil
}
// MsgRegisterControllerResponse is the response type for the InitializeController RPC.
type MsgRegisterControllerResponse struct {
2024-07-05 22:20:13 -04:00
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
// Success returns true if the specified cid is valid and not already encrypted.
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
2024-07-05 22:20:13 -04:00
// Controller is the address of the initialized controller.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"`
// Accounts are a Address Map and Supported coin Denoms for the controller
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
Accounts map[string]string `protobuf:"bytes,3,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
2024-07-05 22:20:13 -04:00
}
func (x *MsgRegisterControllerResponse) Reset() {
*x = MsgRegisterControllerResponse{}
2024-07-05 22:20:13 -04:00
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[5]
2024-07-05 22:20:13 -04:00
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MsgRegisterControllerResponse) String() string {
2024-07-05 22:20:13 -04:00
return protoimpl.X.MessageStringOf(x)
}
func (*MsgRegisterControllerResponse) ProtoMessage() {}
2024-07-05 22:20:13 -04:00
// Deprecated: Use MsgRegisterControllerResponse.ProtoReflect.Descriptor instead.
func (*MsgRegisterControllerResponse) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{5}
2024-07-05 22:20:13 -04:00
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *MsgRegisterControllerResponse) GetSuccess() bool {
if x != nil {
return x.Success
}
return false
}
func (x *MsgRegisterControllerResponse) GetController() string {
2024-07-05 22:20:13 -04:00
if x != nil {
return x.Controller
}
return ""
}
func (x *MsgRegisterControllerResponse) GetAccounts() map[string]string {
if x != nil {
return x.Accounts
}
return nil
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
// MsgAuthorizeService is the message type for the AuthorizeService RPC.
type MsgAuthorizeService struct {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Controller is the address of the controller to authenticate.
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"`
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
// Origin is the origin of the request in wildcard form.
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
Origin string `protobuf:"bytes,2,opt,name=origin,proto3" json:"origin,omitempty"`
// Permissions is the scope of the service.
Scopes *Permissions `protobuf:"bytes,3,opt,name=scopes,proto3" json:"scopes,omitempty"`
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
// token is the macron token to authenticate the operation.
Token string `protobuf:"bytes,4,opt,name=token,proto3" json:"token,omitempty"`
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgAuthorizeService) Reset() {
*x = MsgAuthorizeService{}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[6]
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgAuthorizeService) String() string {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoimpl.X.MessageStringOf(x)
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (*MsgAuthorizeService) ProtoMessage() {}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
// Deprecated: Use MsgAuthorizeService.ProtoReflect.Descriptor instead.
func (*MsgAuthorizeService) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{6}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgAuthorizeService) GetController() string {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x != nil {
return x.Controller
}
return ""
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgAuthorizeService) GetOrigin() string {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x != nil {
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
return x.Origin
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
return ""
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgAuthorizeService) GetScopes() *Permissions {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x != nil {
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
return x.Scopes
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
return nil
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
func (x *MsgAuthorizeService) GetToken() string {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x != nil {
return x.Token
}
return ""
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
// MsgAuthorizeServiceResponse is the response type for the AuthorizeService RPC.
type MsgAuthorizeServiceResponse struct {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
Token string `protobuf:"bytes,2,opt,name=token,proto3" json:"token,omitempty"`
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgAuthorizeServiceResponse) Reset() {
*x = MsgAuthorizeServiceResponse{}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[7]
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgAuthorizeServiceResponse) String() string {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return protoimpl.X.MessageStringOf(x)
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (*MsgAuthorizeServiceResponse) ProtoMessage() {}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
// Deprecated: Use MsgAuthorizeServiceResponse.ProtoReflect.Descriptor instead.
func (*MsgAuthorizeServiceResponse) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{7}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgAuthorizeServiceResponse) GetSuccess() bool {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x != nil {
return x.Success
}
return false
}
func (x *MsgAuthorizeServiceResponse) GetToken() string {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
if x != nil {
return x.Token
}
return ""
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
// MsgRegisterService is the message type for the RegisterService RPC.
type MsgRegisterService struct {
2024-07-05 22:20:13 -04:00
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// authority is the address of the governance account.
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
Controller string `protobuf:"bytes,1,opt,name=controller,proto3" json:"controller,omitempty"`
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
// origin is the origin of the request in wildcard form. Requires valid TXT record in DNS.
Service *Service `protobuf:"bytes,2,opt,name=service,proto3" json:"service,omitempty"`
2024-07-05 22:20:13 -04:00
}
func (x *MsgRegisterService) Reset() {
*x = MsgRegisterService{}
2024-07-05 22:20:13 -04:00
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[8]
2024-07-05 22:20:13 -04:00
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MsgRegisterService) String() string {
2024-07-05 22:20:13 -04:00
return protoimpl.X.MessageStringOf(x)
}
func (*MsgRegisterService) ProtoMessage() {}
2024-07-05 22:20:13 -04:00
// Deprecated: Use MsgRegisterService.ProtoReflect.Descriptor instead.
func (*MsgRegisterService) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{8}
2024-07-05 22:20:13 -04:00
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *MsgRegisterService) GetController() string {
2024-07-05 22:20:13 -04:00
if x != nil {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
return x.Controller
2024-07-05 22:20:13 -04:00
}
return ""
}
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
func (x *MsgRegisterService) GetService() *Service {
2024-07-05 22:20:13 -04:00
if x != nil {
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
return x.Service
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
}
return nil
}
// MsgRegisterServiceResponse is the response type for the RegisterService RPC.
type MsgRegisterServiceResponse struct {
2024-07-05 22:20:13 -04:00
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
Success bool `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
Did string `protobuf:"bytes,2,opt,name=did,proto3" json:"did,omitempty"`
2024-07-05 22:20:13 -04:00
}
func (x *MsgRegisterServiceResponse) Reset() {
*x = MsgRegisterServiceResponse{}
2024-07-05 22:20:13 -04:00
if protoimpl.UnsafeEnabled {
mi := &file_did_v1_tx_proto_msgTypes[9]
2024-07-05 22:20:13 -04:00
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *MsgRegisterServiceResponse) String() string {
2024-07-05 22:20:13 -04:00
return protoimpl.X.MessageStringOf(x)
}
func (*MsgRegisterServiceResponse) ProtoMessage() {}
2024-07-05 22:20:13 -04:00
// Deprecated: Use MsgRegisterServiceResponse.ProtoReflect.Descriptor instead.
func (*MsgRegisterServiceResponse) Descriptor() ([]byte, []int) {
return file_did_v1_tx_proto_rawDescGZIP(), []int{9}
}
func (x *MsgRegisterServiceResponse) GetSuccess() bool {
if x != nil {
return x.Success
}
return false
2024-07-05 22:20:13 -04:00
}
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
func (x *MsgRegisterServiceResponse) GetDid() string {
if x != nil {
return x.Did
}
return ""
}
2024-07-05 22:20:13 -04:00
var File_did_v1_tx_proto protoreflect.FileDescriptor
var file_did_v1_tx_proto_rawDesc = []byte{
0x0a, 0x0f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x78, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x12, 0x06, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x1a, 0x17, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2f, 0x6d, 0x73, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f,
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
0x74, 0x6f, 0x1a, 0x19, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x64,
0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x73, 0x69, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x6f, 0x64, 0x65,
0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x67, 0x6f, 0x67, 0x6f, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9d,
feature/ipfs vault allocation (#8) * refactor: move constants to genesis.proto * feat: add ipfs_active flag to genesis state * feat: add IPFS connection initialization to keeper * feat: add testnet process-compose * refactor: rename sonr-testnet docker image to sonr-runner * refactor: update docker-vm-release workflow to use 'latest' tag * feat: add permission to workflows * feat: add new service chain execution * feat: add abstract vault class to pkl * feat: use jetpackio/devbox image for runner * feat: introduce dwn for local service worker * refactor: remove unnecessary dockerfile layers * refactor(deploy): Update Dockerfile to copy go.mod and go.sum from the parent directory * build: move Dockerfile to root directory * build: Add Dockerfile for deployment * feat: Update Dockerfile to work with Go project in parent directory * build: Update docker-compose.yaml to use relative paths * feat: Update docker-compose to work with new image and parent git directory * refactor: remove unnecessary test script * <no value> * feat: add test_node script for running node tests * feat: add IPFS cluster to testnet * feat: add docker image for sonr-runner * fix: typo in export path * feat(did): Add Localhost Registration Enabled Genesis Option * feat: add support for Sqlite DB in vault * feat: improve vault model JSON serialization * feat: support querying HTMX endpoint for DID * feat: Add primary key, unique, default, not null, auto increment, and foreign key field types * feat: Add PublicKey model in pkl/vault.pkl * feat: add frontend server * refactor: move dwn.wasm to vfs directory * feat(frontend): remove frontend server implementation * feat: Add a frontend server and web auth protocol * feat: implement new key types for MPC and ZK proofs * fix: Update enum types and DefaultKeyInfos * fix: correct typo in KeyAlgorithm enum * feat(did): add attestation format validation * feat: Add x/did/builder/extractor.go * feat: Update JWK parsing in x/did/builder/extractor.go * feat: Use github.com/onsonr/sonr/x/did/types package * feat: Extract and format public keys from WebAuthn credentials * feat: Introduce a new `mapToJWK` function to convert a map to a `types.JWK` struct * feat: add support for extracting JWK public keys * feat: remove VerificationMethod struct * refactor: extract public key extraction logic * feat: add helper functions to map COSECurveID to JWK curve names * feat: pin initial vault
2024-09-07 18:12:58 -04:00
0x01, 0x0a, 0x0f, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f,
0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52,
0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x2c, 0x0a, 0x06, 0x70, 0x61,
0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x64, 0x69, 0x64,
0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x42, 0x04, 0xc8, 0xde, 0x1f, 0x00,
0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65,
0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x3a, 0x0e,
0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x19,
0x0a, 0x17, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x10, 0x4d, 0x73,
0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x36,
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64,
0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63,
0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0xa0, 0x01, 0x0a, 0x18, 0x4d, 0x73, 0x67,
0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x63, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x69, 0x72,
0x79, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x65,
0x78, 0x70, 0x69, 0x72, 0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65,
0x67, 0x69, 0x73, 0x74, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a,
0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
0x52, 0x09, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x22, 0xc3, 0x01, 0x0a, 0x15,
0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72,
0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f,
0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69,
0x6e, 0x67, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a,
0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0c, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1c, 0x0a,
0x09, 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c,
0x52, 0x09, 0x6b, 0x65, 0x79, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x76,
0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03,
0x28, 0x0c, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x3a, 0x0e, 0x82, 0xe7, 0xb0, 0x2a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74,
0x79, 0x22, 0x81, 0x02, 0x0a, 0x1d, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01,
0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x38, 0x0a,
0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64,
0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75,
0x6e, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x64, 0x69, 0x64, 0x2e,
0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f,
0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08,
0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f,
0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xbb, 0x01, 0x0a, 0x13, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74,
0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a,
0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64,
0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69,
0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12,
0x2b, 0x0a, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x13, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73,
0x69, 0x6f, 0x6e, 0x73, 0x52, 0x06, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x05,
0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b,
0x65, 0x6e, 0x3a, 0x0f, 0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
0x6c, 0x65, 0x72, 0x22, 0x4d, 0x0a, 0x1b, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72,
0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20,
0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05,
0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b,
0x65, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x12, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x38, 0x0a, 0x0a, 0x63, 0x6f, 0x6e,
0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2,
0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
0x6c, 0x65, 0x72, 0x12, 0x29, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x0f,
0x82, 0xe7, 0xb0, 0x2a, 0x0a, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x22,
0x48, 0x0a, 0x1a, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a,
0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x64, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x69, 0x64, 0x32, 0xa8, 0x03, 0x0a, 0x03, 0x4d, 0x73,
0x67, 0x12, 0x48, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x12, 0x17, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70,
0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x1f, 0x2e, 0x64, 0x69, 0x64,
0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x10, 0x41,
0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
0x1b, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68,
0x6f, 0x72, 0x69, 0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x23, 0x2e, 0x64,
0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
0x7a, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75,
0x6c, 0x74, 0x12, 0x18, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41,
0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x1a, 0x20, 0x2e, 0x64,
0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x65, 0x56, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5a,
0x0a, 0x12, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f,
0x6c, 0x6c, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73,
0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c,
0x6c, 0x65, 0x72, 0x1a, 0x25, 0x2e, 0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67,
0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c,
0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0f, 0x52, 0x65,
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x2e,
0x64, 0x69, 0x64, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x22, 0x2e, 0x64, 0x69, 0x64, 0x2e,
0x76, 0x31, 0x2e, 0x4d, 0x73, 0x67, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x53, 0x65,
0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x1a, 0x05, 0x80,
0xe7, 0xb0, 0x2a, 0x01, 0x42, 0x77, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x69, 0x64, 0x2e,
0x76, 0x31, 0x42, 0x07, 0x54, 0x78, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x27, 0x67,
0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x6e, 0x73, 0x6f, 0x6e, 0x72,
0x2f, 0x73, 0x6f, 0x6e, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x64, 0x69, 0x64, 0x2f, 0x76, 0x31,
0x3b, 0x64, 0x69, 0x64, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x44, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x44,
0x69, 0x64, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x06, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0xe2, 0x02,
0x12, 0x44, 0x69, 0x64, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,
0x61, 0x74, 0x61, 0xea, 0x02, 0x07, 0x44, 0x69, 0x64, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x33,
2024-07-05 22:20:13 -04:00
}
var (
file_did_v1_tx_proto_rawDescOnce sync.Once
file_did_v1_tx_proto_rawDescData = file_did_v1_tx_proto_rawDesc
)
func file_did_v1_tx_proto_rawDescGZIP() []byte {
file_did_v1_tx_proto_rawDescOnce.Do(func() {
file_did_v1_tx_proto_rawDescData = protoimpl.X.CompressGZIP(file_did_v1_tx_proto_rawDescData)
})
return file_did_v1_tx_proto_rawDescData
}
var file_did_v1_tx_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
2024-07-05 22:20:13 -04:00
var file_did_v1_tx_proto_goTypes = []interface{}{
(*MsgUpdateParams)(nil), // 0: did.v1.MsgUpdateParams
(*MsgUpdateParamsResponse)(nil), // 1: did.v1.MsgUpdateParamsResponse
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
(*MsgAllocateVault)(nil), // 2: did.v1.MsgAllocateVault
(*MsgAllocateVaultResponse)(nil), // 3: did.v1.MsgAllocateVaultResponse
(*MsgRegisterController)(nil), // 4: did.v1.MsgRegisterController
(*MsgRegisterControllerResponse)(nil), // 5: did.v1.MsgRegisterControllerResponse
(*MsgAuthorizeService)(nil), // 6: did.v1.MsgAuthorizeService
(*MsgAuthorizeServiceResponse)(nil), // 7: did.v1.MsgAuthorizeServiceResponse
(*MsgRegisterService)(nil), // 8: did.v1.MsgRegisterService
(*MsgRegisterServiceResponse)(nil), // 9: did.v1.MsgRegisterServiceResponse
nil, // 10: did.v1.MsgRegisterControllerResponse.AccountsEntry
(*Params)(nil), // 11: did.v1.Params
(*Permissions)(nil), // 12: did.v1.Permissions
(*Service)(nil), // 13: did.v1.Service
2024-07-05 22:20:13 -04:00
}
var file_did_v1_tx_proto_depIdxs = []int32{
11, // 0: did.v1.MsgUpdateParams.params:type_name -> did.v1.Params
10, // 1: did.v1.MsgRegisterControllerResponse.accounts:type_name -> did.v1.MsgRegisterControllerResponse.AccountsEntry
12, // 2: did.v1.MsgAuthorizeService.scopes:type_name -> did.v1.Permissions
13, // 3: did.v1.MsgRegisterService.service:type_name -> did.v1.Service
0, // 4: did.v1.Msg.UpdateParams:input_type -> did.v1.MsgUpdateParams
6, // 5: did.v1.Msg.AuthorizeService:input_type -> did.v1.MsgAuthorizeService
2, // 6: did.v1.Msg.AllocateVault:input_type -> did.v1.MsgAllocateVault
4, // 7: did.v1.Msg.RegisterController:input_type -> did.v1.MsgRegisterController
8, // 8: did.v1.Msg.RegisterService:input_type -> did.v1.MsgRegisterService
1, // 9: did.v1.Msg.UpdateParams:output_type -> did.v1.MsgUpdateParamsResponse
7, // 10: did.v1.Msg.AuthorizeService:output_type -> did.v1.MsgAuthorizeServiceResponse
3, // 11: did.v1.Msg.AllocateVault:output_type -> did.v1.MsgAllocateVaultResponse
5, // 12: did.v1.Msg.RegisterController:output_type -> did.v1.MsgRegisterControllerResponse
9, // 13: did.v1.Msg.RegisterService:output_type -> did.v1.MsgRegisterServiceResponse
9, // [9:14] is the sub-list for method output_type
4, // [4:9] is the sub-list for method input_type
4, // [4:4] is the sub-list for extension type_name
4, // [4:4] is the sub-list for extension extendee
0, // [0:4] is the sub-list for field type_name
2024-07-05 22:20:13 -04:00
}
func init() { file_did_v1_tx_proto_init() }
func file_did_v1_tx_proto_init() {
if File_did_v1_tx_proto != nil {
return
}
file_did_v1_genesis_proto_init()
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
file_did_v1_models_proto_init()
2024-07-05 22:20:13 -04:00
if !protoimpl.UnsafeEnabled {
file_did_v1_tx_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MsgUpdateParams); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MsgUpdateParamsResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
switch v := v.(*MsgAllocateVault); i {
2024-07-05 22:20:13 -04:00
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
switch v := v.(*MsgAllocateVaultResponse); i {
2024-07-05 22:20:13 -04:00
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MsgRegisterController); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MsgRegisterControllerResponse); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
switch v := v.(*MsgAuthorizeService); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
feature/refactor did state (#10) * feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
2024-09-11 15:10:54 -04:00
switch v := v.(*MsgAuthorizeServiceResponse); i {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
Feature/update dockerfile (#6) * chore: remove unused new.Dockerfile * feat: add DID model definitions * fix: Fix EncodePublicKey method in KeyInfo struct * feat: Update `EncodePublicKey` to be the inverse of `DecodePublicKey` * refactor: update AssetInfo protobuf definition * fix: update default assets with correct asset types * fix: Initialize IPFS client and check for mounted directories * feat: Improve IPFS client initialization and mount checking * feat: Add local filesystem check for IPFS and IPNS * fix: Use Unixfs().Get() instead of Cat() for IPFS and IPNS content retrieval * feat: Update GetCID and GetIPNS functions to read data from IPFS node * fix: Ensure IPFS client is initialized before pinning CID * feat: Add AddFile and AddFolder methods * feat: add IPFS file system abstraction * feat: Implement IPFS file, location, and filesystem abstractions * refactor: remove unused functions and types * refactor: remove unused FileSystem interface * feat: add initial wasm entrypoint * feat: add basic vault command operations * docs: add vault module features * test: remove test for MsgUpdateParams * refactor: Replace PrimaryKey with Property struct in zkprop.go * feat: Update the `CreateWitness` and `CreateAccumulator` and `VerifyWitness` and `UpdateAccumulator` to Use the new `Accumulator` and `Witness` types. Then Clean up the code in the file and refactor the marshalling methods * <no value> * feat: add KeyCurve and KeyType to KeyInfo in genesis * feat: add WASM build step to devbox.json * feat: Add zkgate.go file * feat: Uncomment and modify zkgate code to work with Property struct * feat: Merge zkgate.go and zkprop.go logic * feat: implement API endpoints for profile management * refactor: remove unused template file * feat(orm): remove unused ORM models * feat: add persistent SQLite database support in WASM * fix: Update module names in protobuf files * feat: Add method to initialize SQLite database * fix: update go-sqlite3 dependency to version 1.14.23 * feat: introduce database layer * feat: Implement database layer for Vault node * feature/update-dockerfile * feat: Add keyshares table * fix: Reorder the SQL statements in the tables.go file * feat: Update the `createCredentialsTable` method to match the proper Credential struct * feat: Update createProfilesTable and add createPropertiesTable * feat: Add constant SQL queries to queries.go and use prepared statements in db.go * feat: Add createKeysharesTable to internal/db/db.go * feat: Update `createPermissionsTable` to match Permissions struct * feat: Add database enum types * feat: Add DIDNamespace and PermissionScope enums * feat: Add DBConfig and DBOption types * feat: Update the db implementation to use the provided go library * fix: update db implementation to use go-sqlite3 v0.18.2 * fix: Refactor database connection and statement handling * feat: Simplify db.go implementation * feat: Convert constant SQL queries to functions in queries.go and update db.go to use prepared statements * feat: Add models.go file with database table structs * fix: Remove unused statement map and prepare statements diff --git a/internal/db/db.go b/internal/db/db.go index 201d09b..d4d4d4e 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -32,11 +32,6 @@ func Open(config *DBConfig) (*DB, error) { Conn: conn, } - if err := createTables(db); err != nil { - conn.Close() - return nil, fmt.Errorf("failed to create tables: %w", err) - } - return db, nil } @@ -61,114 +56,3 @@ func createTables(db *DB) error { return nil } -// AddAccount adds a new account to the database -func (db *DB) AddAccount(name, address string) error { - return db.Exec(insertAccountQuery(name, address)) -} - -// AddAsset adds a new asset to the database -func (db *DB) AddAsset(name, symbol string, decimals int, chainID int64) error { - return db.Exec(insertAssetQuery(name, symbol, decimals, chainID)) -} - -// AddChain adds a new chain to the database -func (db *DB) AddChain(name, networkID string) error { - return db.Exec(insertChainQuery(name, networkID)) -} - -// AddCredential adds a new credential to the database -func (db *DB) AddCredential( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) error { - return db.Exec(insertCredentialQuery( - handle, - controller, - attestationType, - origin, - credentialID, - publicKey, - transport, - signCount, - userPresent, - userVerified, - backupEligible, - backupState, - cloneWarning, - )) -} - -// AddProfile adds a new profile to the database -func (db *DB) AddProfile( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) error { - return db.statements["insertProfile"].Exec( - id, subject, controller, originURI, publicMetadata, privateMetadata, - ) -} - -// AddProperty adds a new property to the database -func (db *DB) AddProperty( - profileID, key, accumulator, propertyKey string, -) error { - return db.statements["insertProperty"].Exec( - profileID, key, accumulator, propertyKey, - ) -} - -// AddPermission adds a new permission to the database -func (db *DB) AddPermission( - serviceID string, - grants []DIDNamespace, - scopes []PermissionScope, -) error { - grantsJSON, err := json.Marshal(grants) - if err != nil { - return fmt.Errorf("failed to marshal grants: %w", err) - } - - scopesJSON, err := json.Marshal(scopes) - if err != nil { - return fmt.Errorf("failed to marshal scopes: %w", err) - } - - return db.statements["insertPermission"].Exec( - serviceID, string(grantsJSON), string(scopesJSON), - ) -} - -// GetPermission retrieves the permission for the given service ID -func (db *DB) GetPermission(serviceID string) ([]DIDNamespace, []PermissionScope, error) { - row := db.statements["getPermission"].QueryRow(serviceID) - - var grantsJSON, scopesJSON string - if err := row.Scan(&grantsJSON, &scopesJSON); err != nil { - return nil, nil, fmt.Errorf("failed to get permission: %w", err) - } - - var grants []DIDNamespace - if err := json.Unmarshal([]byte(grantsJSON), &grants); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal grants: %w", err) - } - - var scopes []PermissionScope - if err := json.Unmarshal([]byte(scopesJSON), &scopes); err != nil { - return nil, nil, fmt.Errorf("failed to unmarshal scopes: %w", err) - } - - return grants, scopes, nil -} - -// Close closes the database connection and finalizes all prepared statements -func (db *DB) Close() error { - for _, stmt := range db.statements { - stmt.Finalize() - } - return db.Conn.Close() -} diff --git a/internal/db/queries.go b/internal/db/queries.go index 807d701..e69de29 100644 --- a/internal/db/queries.go +++ b/internal/db/queries.go @@ -1,79 +0,0 @@ -package db - -import "fmt" - -// Account queries -func insertAccountQuery(name, address string) string { - return fmt.Sprintf(`INSERT INTO accounts (name, address) VALUES (%s, %s)`, name, address) -} - -// Asset queries -func insertAssetQuery(name, symbol string, decimals int, chainID int64) string { - return fmt.Sprintf( - `INSERT INTO assets (name, symbol, decimals, chain_id) VALUES (%s, %s, %d, %d)`, - name, - symbol, - decimals, - chainID, - ) -} - -// Chain queries -func insertChainQuery(name string, networkID string) string { - return fmt.Sprintf(`INSERT INTO chains (name, network_id) VALUES (%s, %d)`, name, networkID) -} - -// Credential queries -func insertCredentialQuery( - handle, controller, attestationType, origin string, - credentialID, publicKey []byte, - transport string, - signCount uint32, - userPresent, userVerified, backupEligible, backupState, cloneWarning bool, -) string { - return fmt.Sprintf(`INSERT INTO credentials ( - handle, controller, attestation_type, origin, - credential_id, public_key, transport, sign_count, - user_present, user_verified, backup_eligible, - backup_state, clone_warning - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %d, %t, %t, %t, %t, %t)`, - handle, controller, attestationType, origin, - credentialID, publicKey, transport, signCount, - userPresent, userVerified, backupEligible, - backupState, cloneWarning) -} - -// Profile queries -func insertProfileQuery( - id, subject, controller, originURI, publicMetadata, privateMetadata string, -) string { - return fmt.Sprintf(`INSERT INTO profiles ( - id, subject, controller, origin_uri, - public_metadata, private_metadata - ) VALUES (%s, %s, %s, %s, %s, %s)`, - id, subject, controller, originURI, - publicMetadata, privateMetadata) -} - -// Property queries -func insertPropertyQuery(profileID, key, accumulator, propertyKey string) string { - return fmt.Sprintf(`INSERT INTO properties ( - profile_id, key, accumulator, property_key - ) VALUES (%s, %s, %s, %s)`, - profileID, key, accumulator, propertyKey) -} - -// Permission queries -func insertPermissionQuery(serviceID, grants, scopes string) string { - return fmt.Sprintf( - `INSERT INTO permissions (service_id, grants, scopes) VALUES (%s, %s, %s)`, - serviceID, - grants, - scopes, - ) -} - -// GetPermission query -func getPermissionQuery(serviceID string) string { - return fmt.Sprintf(`SELECT grants, scopes FROM permissions WHERE service_id = %s`, serviceID) -} * fix: update Makefile to use sonrd instead of wasmd * feat: Add targets for templ and vault in Makefile and use only make in devbox.json * feat: add SQLite database support * bump: version 0.6.0 → 0.7.0 * refactor: upgrade actions to latest versions
2024-09-05 01:24:57 -04:00
switch v := v.(*MsgRegisterService); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_did_v1_tx_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*MsgRegisterServiceResponse); i {
2024-07-05 22:20:13 -04:00
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_did_v1_tx_proto_rawDesc,
NumEnums: 0,
NumMessages: 11,
2024-07-05 22:20:13 -04:00
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_did_v1_tx_proto_goTypes,
DependencyIndexes: file_did_v1_tx_proto_depIdxs,
MessageInfos: file_did_v1_tx_proto_msgTypes,
}.Build()
File_did_v1_tx_proto = out.File
file_did_v1_tx_proto_rawDesc = nil
file_did_v1_tx_proto_goTypes = nil
file_did_v1_tx_proto_depIdxs = nil
}