import os
from gql import Client, gql
from gql.transport.requests import RequestsHTTPTransport
# Setup client
transport = RequestsHTTPTransport(
url=os.getenv("API_ENDPOINT"), # Set to the API endpoint
headers={"x-api-key": os.getenv("API_KEY")}, # Your API key from 1Password
use_json=True,
)
client = Client(transport=transport, fetch_schema_from_transport=True)
def fetch_all_lessons():
cursor = None
has_next_page = True
all_lessons = []
query = gql("""
query FetchLessons($first: Int!, $after: String, $where: LessonWhere) {
lessonsConnection(first: $first, after: $after, where: $where) {
edges {
node {
identifier
name
gradeLevel
courseCode
}
cursor
}
pageInfo {
hasNextPage
endCursor
}
}
}
""")
while has_next_page:
variables = {
"first": 50,
"after": cursor,
"where": None # Add filters here if needed
}
result = client.execute(query, variable_values=variables)
connection = result["lessonsConnection"]
nodes = [edge["node"] for edge in connection["edges"]]
all_lessons.extend(nodes)
has_next_page = connection["pageInfo"]["hasNextPage"]
cursor = connection["pageInfo"]["endCursor"]
return all_lessons
# Example usage
if __name__ == "__main__":
lessons = fetch_all_lessons()
print(f"Fetched {len(lessons)} lessons")