Add Extism JS Async Lib and State #1

Merged
pn merged 22 commits from feat/sdk into main 2026-01-08 01:06:58 +00:00
Showing only changes of commit 6cd55e4041 - Show all commits

46
main.go
View File

@@ -342,34 +342,54 @@ func query() int32 {
}
func initializeDatabase(credentialBytes []byte) (string, error) {
// TODO: Initialize SQLite database with schema
// TODO: Parse WebAuthn credential
// TODO: Generate MPC key shares
// TODO: Create DID document
// TODO: Insert initial records
conn, err := openDatabase()
if err != nil {
return "", fmt.Errorf("open database: %w", err)
}
did := fmt.Sprintf("did:sonr:%x", credentialBytes[:16])
docJSON := fmt.Sprintf(`{"@context":["https://www.w3.org/ns/did/v1"],"id":"%s"}`, did)
_, err = conn.Exec(
"INSERT INTO did_documents (did, controller, document, sequence) VALUES (?, ?, ?, ?)",
did, did, docJSON, 0,
)
if err != nil {
return "", fmt.Errorf("insert DID: %w", err)
}
pdk.Log(pdk.LogDebug, "initializeDatabase: created schema and initial records")
return did, nil
}
func serializeDatabase() ([]byte, error) {
// TODO: Serialize SQLite database to bytes
// TODO: Encrypt with WebAuthn-derived key
return []byte("placeholder_database"), nil
data, err := serializeDatabaseBytes()
if err != nil {
return nil, fmt.Errorf("serialize: %w", err)
}
return data, nil
}
func loadDatabase(data []byte) (string, error) {
// TODO: Decrypt database with WebAuthn-derived key
// TODO: Load SQLite database from bytes
// TODO: Query for primary DID
if len(data) < 10 {
return "", errors.New("invalid database format")
}
did := "did:sonr:loaded"
if err := loadDatabaseFromBytes(data); err != nil {
return "", fmt.Errorf("load database: %w", err)
}
conn := getDatabase()
if conn == nil {
return "", errors.New("database not initialized")
}
var did string
err := conn.QueryRow("SELECT did FROM did_documents LIMIT 1").Scan(&did)
if err != nil {
return "", fmt.Errorf("query DID: %w", err)
}
pdk.Log(pdk.LogDebug, "loadDatabase: database loaded successfully")
return did, nil
}