···40404141- `createInvite`: Creates an invite code to register new accounts.
4242- `purgeInvites`: Deletes all available invite codes.
4343+- `listAccounts`: Lists all active accounts.
4344- `deleteAccount <username>`: Deletes an account with a given `username`.
44454546## database
+11
controller/account.go
···1111 "github.com/jmoiron/sqlx"
1212)
13131414+func GetAllAccounts(db *sqlx.DB) ([]model.Account, error) {
1515+ var accounts = []model.Account{}
1616+1717+ err := db.Select(&accounts, "SELECT * FROM account ORDER BY created_at ASC")
1818+ if err != nil {
1919+ return nil, err
2020+ }
2121+2222+ return accounts, nil
2323+}
2424+1425func GetAccount(db *sqlx.DB, username string) (*model.Account, error) {
1526 var account = model.Account{}
1627
+25-2
main.go
···9898 fmt.Printf("Invites deleted successfully.\n")
9999 return
100100101101+ case "listAccounts":
102102+ accounts, err := controller.GetAllAccounts(global.DB)
103103+ if err != nil {
104104+ fmt.Fprintf(os.Stderr, "Failed to fetch accounts: %v\n", err)
105105+ os.Exit(1)
106106+ }
107107+108108+ for _, account := range accounts {
109109+ fmt.Printf(
110110+ "User: %s\n" +
111111+ "\tID: %s\n" +
112112+ "\tEmail: %s\n" +
113113+ "\tCreated: %s\n",
114114+ account.Username,
115115+ account.ID,
116116+ account.Email,
117117+ account.CreatedAt,
118118+ )
119119+ }
120120+ return
121121+101122 case "deleteAccount":
102123 if len(os.Args) < 2 {
103124 fmt.Fprintf(os.Stderr, "FATAL: Account name not specified for -deleteAccount\n")
···108129109130 account, err := controller.GetAccount(global.DB, username)
110131 if err != nil {
111111- fmt.Fprintf(os.Stderr, "Failed to fetch account \"%s\": %s\n", username, err.Error())
132132+ fmt.Fprintf(os.Stderr, "Failed to fetch account \"%s\": %v\n", username, err)
112133 os.Exit(1)
113134 }
114135···135156136157 }
137158138138- fmt.Printf(
159159+ // command help
160160+ fmt.Print(
139161 "Available commands:\n\n" +
140162 "createInvite:\n\tCreates an invite code to register new accounts.\n" +
141163 "purgeInvites:\n\tDeletes all available invite codes.\n" +
164164+ "listAccounts:\n\tLists all active accounts.\n",
142165 "deleteAccount <username>:\n\tDeletes an account with a given `username`.\n",
143166 )
144167 return