- groups:add / ranges:plan / nodes:create / coordinator:run commands - the node API: lease, the range's chunks as one framed stream from the spool, batches, heartbeat, finish, release (node guard, token per node) - edge:node: needs COORDINATOR_URL and NODE_TOKEN only (placeholders for the rest), posts a batch every 10 chunks, gives its range back on SIGTERM - releases are gathered per batch: 1.04 chunk rows per release at 10 chunks per batch (1.35 when built per XOVER chunk) - partitions are checked per batch instead of remembered Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
30 lines
889 B
TypeScript
30 lines
889 B
TypeScript
import User from '#models/user'
|
|
import { loginValidator } from '#validators/user'
|
|
import type { HttpContext } from '@adonisjs/core/http'
|
|
import UserTransformer from '#transformers/user_transformer'
|
|
|
|
export default class AccessTokensController {
|
|
async store({ request, serialize }: HttpContext) {
|
|
const { email, password } = await request.validateUsing(loginValidator)
|
|
|
|
const user = await User.verifyCredentials(email, password)
|
|
const token = await User.accessTokens.create(user)
|
|
|
|
return serialize({
|
|
user: UserTransformer.transform(user),
|
|
token: token.value!.release(),
|
|
})
|
|
}
|
|
|
|
async destroy({ auth }: HttpContext) {
|
|
const user = auth.use('api').getUserOrFail()
|
|
if (user.currentAccessToken) {
|
|
await User.accessTokens.delete(user, user.currentAccessToken.identifier)
|
|
}
|
|
|
|
return {
|
|
message: 'Logged out successfully',
|
|
}
|
|
}
|
|
}
|