in src/typespec-aaz/src/convertor.ts [122:192]
export function retrieveAAZOperation(
context: AAZEmitterContext,
operation: HttpOperation,
pathItem: TypeSpecPathItem | undefined,
): TypeSpecPathItem {
context.tracer.trace("RetrieveOperation", `${operation.verb} ${operation.path}`);
if (!pathItem) {
pathItem = {};
}
const verb = operation.verb;
const opId = resolveOperationId(context, operation);
if (!pathItem[verb]) {
pathItem[verb] = {};
}
pathItem[verb]!.operationId = opId;
pathItem[verb]!.pageable = extractPagedMetadata(context.program, operation);
const metadateInfo = createMetadataInfo(context.program, {
canonicalVisibility: Visibility.Read,
});
const typeNameOptions = {
// shorten type names by removing TypeSpec and service namespace
namespaceFilter(ns: Namespace) {
return !isService(context.program, ns);
},
};
const opContext: AAZOperationEmitterContext = {
...context,
typeNameOptions,
metadateInfo,
operationId: opId,
visibility: Visibility.Read,
pendingSchemas: new TwoLevelMap(),
refs: new TwoLevelMap(),
};
const verbVisibility = resolveRequestVisibility(context.program, operation.operation, verb);
if (verb === "get") {
opContext.visibility = Visibility.Query;
pathItem[verb]!.read = convert2CMDOperation(opContext, operation);
processPendingSchemas(opContext, verbVisibility, "read");
} else if (verb === "head") {
opContext.visibility = Visibility.Query;
pathItem[verb]!.read = convert2CMDOperation(opContext, operation);
processPendingSchemas(opContext, verbVisibility, "read");
} else if (verb === "delete") {
opContext.visibility = Visibility.Delete;
pathItem[verb]!.create = convert2CMDOperation(opContext, operation);
processPendingSchemas(opContext, verbVisibility, "create");
} else if (verb === "post") {
opContext.visibility = Visibility.Create;
pathItem[verb]!.create = convert2CMDOperation(opContext, operation);
processPendingSchemas(opContext, verbVisibility, "create");
} else if (verb === "put") {
opContext.visibility = Visibility.Create;
pathItem[verb]!.create = convert2CMDOperation(opContext, operation);
processPendingSchemas(opContext, verbVisibility, "create");
opContext.visibility = Visibility.Update;
opContext.pendingSchemas.clear();
opContext.refs.clear();
pathItem[verb]!.update = convert2CMDOperation(opContext, operation);
processPendingSchemas(opContext, verbVisibility, "update");
} else if (verb === "patch") {
opContext.visibility = Visibility.Update;
pathItem[verb]!.update = convert2CMDOperation(opContext, operation);
processPendingSchemas(opContext, verbVisibility, "update");
} else {
console.log(" verb not expected: ", verb);
}
return pathItem;
}