Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Create Tickets endpoints #160

Merged
merged 21 commits into from
Feb 5, 2024
Merged

feat: Create Tickets endpoints #160

merged 21 commits into from
Feb 5, 2024

Conversation

duwenxin99
Copy link
Contributor

No description provided.

@duwenxin99 duwenxin99 requested a review from a team as a code owner January 3, 2024 21:15
@duwenxin99 duwenxin99 self-assigned this Jan 3, 2024
@duwenxin99 duwenxin99 changed the title feat: Create get ticket endpoint feat: Create tickets endpoints Jan 3, 2024
@duwenxin99 duwenxin99 changed the title feat: Create tickets endpoints feat: Create Tickets endpoints Jan 3, 2024
Comment on lines 203 to 190
airline: str,
flight_number: str,
departure_airport: str,
arrival_airport: str,
departure_time: datetime.datetime,
arrival_time: datetime.datetime,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems like a lot of parameters -- can we simplify down so it's more specific ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we don't have a get endpoint right now, seems like these information are necessary to identify a specific flight at a specific time.

return insert_ticket


async def generate_list_tickets(client: aiohttp.ClientSession):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: can we double check if this needs to be an async function

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

switched to sync function.


routes = APIRouter()


def _ParseUserIdToken(headers: Mapping[str, Any]) -> Optional[str]:
"""Parses the bearer token out of the request headers."""
# authorization_header = headers.lower()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: remove comment?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

resolved

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still see a comment :)

# authorization_header = headers.lower()
user_id_token_header = headers.get("User-Id-Token")
if not user_id_token_header:
print("no user authorization header")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is print the right option here? Should we start logging instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

raising exception

retrieval_service/app/routes.py Show resolved Hide resolved
retrieval_service/app/routes.py Show resolved Hide resolved
@routes.post("/tickets/insert")
async def insert_ticket(
request: Request,
current_user: Annotated[dict, Depends(get_current_user)],
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: user info?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes that is more readable


parts = str(user_id_token_header).split(" ")
if len(parts) != 2 or parts[0] != "Bearer":
return None
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be an empty dict? (or is None the right thing)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

raising exception instead

}

except Exception as e: # pylint: disable=broad-except
print(e)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's not print - we should either log + ignore or log + throw (or just throw)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to raising exceptions

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This still needs to be updated -- in general we should try so avoid broad try/except statements. Let's only catch the error if we need too.

@duwenxin99 duwenxin99 force-pushed the progress branch 3 times, most recently from 8719d36 to 34e2d25 Compare January 28, 2024 21:31
@duwenxin99 duwenxin99 requested a review from kurtisvg January 29, 2024 14:08
@duwenxin99 duwenxin99 force-pushed the progress branch 2 times, most recently from 9a1821c to 6045d2c Compare January 29, 2024 14:23

routes = APIRouter()


def _ParseUserIdToken(headers: Mapping[str, Any]) -> Optional[str]:
"""Parses the bearer token out of the request headers."""
# authorization_header = headers.lower()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still see a comment :)

@@ -51,6 +53,7 @@ async def initialize_datastore(app: FastAPI):


def init_app(cfg: AppConfig) -> FastAPI:
os.environ["CLIENT_ID"] = cfg.clientId
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should store this in the App state:

app.state.CLIENT_ID = cfg.clientId

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

}

except Exception as e: # pylint: disable=broad-except
print(e)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This still needs to be updated -- in general we should try so avoid broad try/except statements. Let's only catch the error if we need too.

departure_time: str,
arrival_time: str,
):
raise NotImplementedError("Not Implemented")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason we aren't implementing here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will implement cloudsql and firestore endpoints in separate PRs

Comment on lines +467 to +468
if results != "INSERT 0 1":
raise Exception("Ticket Insertion failure")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't it throw an error if the insert wasn't successful already?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point... deleted this line

@duwenxin99 duwenxin99 merged commit 26ad5d9 into main Feb 5, 2024
8 checks passed
@duwenxin99 duwenxin99 deleted the progress branch February 5, 2024 14:51
Yuan325 pushed a commit that referenced this pull request Jul 1, 2024
🤖 I have created a release *beep* *boop*
---


## 1.0.0 (2024-06-27)


### Features

* Add "airports" dataset
([#8](#8))
([e566554](e566554))
* add "amenities" dataset
([#9](#9))
([74db3ff](74db3ff))
* add "flights" dataset
([#10](#10))
([eebd3ce](eebd3ce))
* add api endpoints for amenities
([#12](#12))
([bd1c411](bd1c411))
* add app_test cicd workflow
([#157](#157))
([51f0e51](51f0e51))
* add clean up instructions
([#99](#99))
([c9021b1](c9021b1))
* add cloud sql cloudbuild workflow
([#143](#143))
([3dd3444](3dd3444))
* add Cloud SQL MySQL as a datastore provider
([#415](#415))
([d3f43d7](d3f43d7))
* add cloudsql integration test
([#141](#141))
([764ffeb](764ffeb))
* add cloudsql provider
([#5](#5))
([32a063d](32a063d))
* add confirmation for ticket booking
([#407](#407))
([6987280](6987280))
* add cymbal air passenger policy
([#265](#265))
([199a67c](199a67c))
* add endpoint for policy
([#271](#271))
([397ca79](397ca79))
* Add Firestore provider
([#65](#65))
([0cbd8ed](0cbd8ed))
* add GET endpoint for airport
([#11](#11))
([d36fd29](d36fd29))
* add initial "flights" endpoints
([#17](#17))
([da374d9](da374d9))
* add initial readme
([#31](#31))
([cb6d68c](cb6d68c))
* add instructions file for cloudsql_postgres
([#93](#93))
([ca3d2c5](ca3d2c5))
* add instructions for alloydb
([#27](#27))
([a30d5d1](a30d5d1))
* add integration test for postgres
([#123](#123))
([0aeab54](0aeab54))
* add labels syncing config
([#40](#40))
([b27558f](b27558f))
* add mock for retrieval service test
([#126](#126))
([498c6d7](498c6d7))
* add orchestration interface
([#226](#226))
([573c04b](573c04b))
* Add Renovate Config
([#42](#42))
([40c221b](40c221b))
* add search airport tools to langchain agent
([#140](#140))
([94a5df3](94a5df3))
* add smoke test for function calling
([#199](#199))
([5eecedf](5eecedf))
* add test for database export
([#133](#133))
([b114186](b114186))
* Adding Spanner database provider for retrieval service.
([#316](#316))
([8990bc9](8990bc9))
* Create google sign in button and send id token with request
([#147](#147))
([c0a34a7](c0a34a7))
* Create individual user client session
([#137](#137))
([359e5d3](359e5d3))
* Create reset button to clear session cookies
([#152](#152))
([f008c04](f008c04))
* Create Tickets endpoints
([#160](#160))
([26ad5d9](26ad5d9))
* **doc:** Add Firestore setup instruction
([#87](#87))
([e6e6fb6](e6e6fb6))
* **docs:** add code of conduct
([#39](#39))
([0dee8dd](0dee8dd))
* **docs:** update docs
([#36](#36))
([e908e75](e908e75))
* **docs:** update gcloud track for deployment with VPC network
([#80](#80))
([84313c9](84313c9))
* implement signin signout
([#258](#258))
([88b6c83](88b6c83))
* increase font-size and make UI better
([#292](#292))
([c6dd0f6](c6dd0f6))
* inital prototype of extension
([a502f84](a502f84))
* minor UI improvements
([#275](#275))
([7e31ac3](7e31ac3))
* minor UI updates
([#279](#279))
([774703a](774703a))
* refactor demo frontend
([#15](#15))
([4245020](4245020))
* refresh UI
([#239](#239))
([0254ce8](0254ce8))
* replace October flights data
([#37](#37))
([c2c70a2](c2c70a2))
* Replace requests package with aiohttp
([#125](#125))
([4fc0d27](4fc0d27))
* update airport dataset and add search endpoint
([#14](#14))
([baabfe4](baabfe4))
* update amenity embedding to include amenity name
([#144](#144))
([3fe22ce](3fe22ce))
* update amenity_dataset with new hour columns
([#151](#151))
([160d8df](160d8df))
* update app in langchain demo
([#225](#225))
([7c463d9](7c463d9))
* update model to Gemini
([#158](#158))
([09959fd](09959fd))
* Update prompt and tools
([#34](#34))
([499f6a7](499f6a7))
* update service Dockerfile
([#19](#19))
([ea7edc7](ea7edc7))
* update to include user name in chat
([#249](#249))
([070b7e0](070b7e0))
* vertex ai function calling llm
([#188](#188))
([ab1aedc](ab1aedc))


### Bug Fixes

* add dependency
([#195](#195))
([65cc37c](65cc37c))
* add retrieval service service account role to doc
([#121](#121))
([8ea12c9](8ea12c9))
* **ci:** use script over args in all cloudbuild
([#307](#307))
([da8d3f6](da8d3f6))
* **ci:** use script over args in cloudbuild syntax
([#306](#306))
([b5aa667](b5aa667))
* Do not pass None values to session.get()
([#136](#136))
([5d9cbbc](5d9cbbc))
* **docs:** fixed broken links to demo apps
([#132](#132))
([4955cd0](4955cd0))
* **firestore:** Add ID to all documents in Firestore provider
([#94](#94))
([1a02328](1a02328))
* Fix closed connection issue on reset button
([#175](#175))
([21607ec](21607ec))
* Fix get_agent() uuid comparison
([#200](#200))
([bc68633](bc68633))
* fix the refresh icon hiding behind Google banner
([#247](#247))
([1d858ba](1d858ba))
* **langchain_tools_demo:** Add ID Token credential flow for GCE
([#198](#198))
([ed9b6c2](ed9b6c2))
* **langchain_tools_demo:** fix agent concurrency between restarts
([#194](#194))
([2584154](2584154))
* **langchain_tools_demo:** use relative paths for resources
([#192](#192))
([6f8ae0d](6f8ae0d))
* Make `clientId `optional in config.yml
([#207](#207))
([3914d8c](3914d8c))
* missing Client ID
([#196](#196))
([960f6b1](960f6b1))
* sign out when user token invalid
([#329](#329))
([2ec915b](2ec915b))
* strip query params in loginUri
([#425](#425))
([41f3bb7](41f3bb7))
* update AlloyDB instruction order
([#92](#92))
([334257c](334257c))
* update alloydb.md to remove extra trailing space
([#46](#46))
([7f97d33](7f97d33))
* update embeddings and pin model
([#124](#124))
([5842c08](5842c08))
* update renovate config
([#378](#378))
([2ec52ce](2ec52ce))
* update search airport tool
([#148](#148))
([d4b36e9](d4b36e9))
* Use idiomatic python for conditional
([#149](#149))
([18e5e9d](18e5e9d))
* use lazy refresh for AlloyDB and Cloud SQL Connector
([#429](#429))
([c73484d](c73484d))

---
This PR was generated with [Release
Please](/~https://github.com/googleapis/release-please). See
[documentation](/~https://github.com/googleapis/release-please#release-please).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants