-
Notifications
You must be signed in to change notification settings - Fork 514
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Add support for active users stats (#585)
* feat: Add support for active users stats * feat: Monitor active users for all auth recipes and session recipe
- Loading branch information
Showing
14 changed files
with
154 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
package io.supertokens; | ||
|
||
import io.supertokens.pluginInterface.exceptions.StorageQueryException; | ||
import io.supertokens.storageLayer.StorageLayer; | ||
|
||
public class ActiveUsers { | ||
|
||
public static void updateLastActive(Main main, String userId) { | ||
try { | ||
StorageLayer.getActiveUsersStorage(main).updateLastActive(userId); | ||
} catch (StorageQueryException ignored) { | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
43 changes: 43 additions & 0 deletions
43
src/main/java/io/supertokens/inmemorydb/queries/ActiveUsersQueries.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package io.supertokens.inmemorydb.queries; | ||
|
||
import java.sql.SQLException; | ||
|
||
import io.supertokens.inmemorydb.config.Config; | ||
import io.supertokens.pluginInterface.exceptions.StorageQueryException; | ||
import io.supertokens.inmemorydb.Start; | ||
|
||
import static io.supertokens.inmemorydb.QueryExecutorTemplate.execute; | ||
import static io.supertokens.inmemorydb.QueryExecutorTemplate.update; | ||
|
||
public class ActiveUsersQueries { | ||
static String getQueryToCreateUserLastActiveTable(Start start) { | ||
return "CREATE TABLE IF NOT EXISTS " + Config.getConfig(start).getUserLastActiveTable() + " (" | ||
+ "user_id VARCHAR(128)," | ||
+ "last_active_time BIGINT UNSIGNED," + "PRIMARY KEY(user_id)" + " );"; | ||
} | ||
|
||
public static int countUsersActiveSince(Start start, long sinceTime) throws SQLException, StorageQueryException { | ||
String QUERY = "SELECT COUNT(*) as total FROM " + Config.getConfig(start).getUserLastActiveTable() | ||
+ " WHERE last_active_time >= ?"; | ||
|
||
return execute(start, QUERY, pst -> pst.setLong(1, sinceTime), result -> { | ||
if (result.next()) { | ||
return result.getInt("total"); | ||
} | ||
return 0; | ||
}); | ||
} | ||
|
||
public static int updateUserLastActive(Start start, String userId) throws SQLException, StorageQueryException { | ||
String QUERY = "INSERT INTO " + Config.getConfig(start).getUserLastActiveTable() | ||
+ "(user_id, last_active_time) VALUES(?, ?) ON CONFLICT(user_id) DO UPDATE SET last_active_time = ?"; | ||
|
||
long now = System.currentTimeMillis(); | ||
return update(start, QUERY, pst -> { | ||
pst.setString(1, userId); | ||
pst.setLong(2, now); | ||
pst.setLong(3, now); | ||
}); | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters