Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into mf/upgrade-generator
Browse files Browse the repository at this point in the history
  • Loading branch information
mfedderly committed Feb 14, 2024
2 parents cb2772a + 6db689c commit eb60762
Show file tree
Hide file tree
Showing 92 changed files with 1,600 additions and 778 deletions.
6 changes: 4 additions & 2 deletions examples/basic/cli/src/OntologyType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@ import type { OsdkObjectFrom } from "@osdk/client";
import type { Ontology } from "@osdk/examples.basic.sdk";

// Demo for if you want concrete types
export interface Employee extends OsdkObjectFrom<"Employee", Ontology> {}
export interface Todo extends OsdkObjectFrom<"Todo", Ontology> {}
export interface Employee
extends OsdkObjectFrom<Ontology["objects"]["Employee"]>
{}
export interface Todo extends OsdkObjectFrom<Ontology["objects"]["Todo"]> {}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@

import type { ClientContext } from "@osdk/client";
import { aggregateOrThrow } from "@osdk/client/objects";
import type { Ontology } from "@osdk/examples.basic.sdk";
import { Ontology } from "@osdk/examples.basic.sdk";
import invariant from "tiny-invariant";
import type { TypeOf } from "ts-expect";
import { expectType } from "ts-expect";

export async function fetchAggregationForEmployeesGroupedThin(
clientCtx: ClientContext<Ontology>,
) {
const result = await aggregateOrThrow(clientCtx, "Employee", {
const result = await aggregateOrThrow(clientCtx, Ontology.objects.Employee, {
select: {
locationCity: "approximateDistinct",
locationName: "approximateDistinct",
Expand Down
30 changes: 21 additions & 9 deletions examples/basic/cli/src/examples/fetchEmployeePageThin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@ import * as OsdkApi from "@osdk/client";
import type { ClientContext } from "@osdk/client";
import { Objects } from "@osdk/client";
import { fetchPageOrThrow } from "@osdk/client/objects";
import type { Ontology } from "@osdk/examples.basic.sdk";
import { Ontology } from "@osdk/examples.basic.sdk";
import type { TypeOf } from "ts-expect";
import { expectType } from "ts-expect";

export async function fetchEmployeePageThin(
clientCtx: ClientContext<Ontology>,
) {
let result = await fetchPageOrThrow(clientCtx, "Employee", {
let result = await fetchPageOrThrow(clientCtx, Ontology.objects.Employee, {
select: ["adUsername", "businessTitle", "employeeNumber"],
});

Expand All @@ -42,17 +42,29 @@ export async function fetchEmployeePageThin(
>(false);

// OR
let result2 = await Objects.fetchPageOrThrow(clientCtx, "Employee", {
select: ["adUsername", "businessTitle", "employeeNumber"],
});
let result2 = await Objects.fetchPageOrThrow(
clientCtx,
Ontology.objects.Employee,
{
select: ["adUsername", "businessTitle", "employeeNumber"],
},
);

// or
let result3 = await OsdkApi.Objects.fetchPageOrThrow(clientCtx, "Employee", {
select: ["adUsername", "businessTitle", "employeeNumber"],
});
let result3 = await OsdkApi.Objects.fetchPageOrThrow(
clientCtx,
Ontology.objects.Employee,
{
select: ["adUsername", "businessTitle", "employeeNumber"],
},
);

// Quick check to make sure we get everything
let result4 = await fetchPageOrThrow(clientCtx, "Employee", {});
let result4 = await fetchPageOrThrow(
clientCtx,
Ontology.objects.Employee,
{},
);

console.log("fetchEmployeePageThin(): ");
console.table(
Expand Down
11 changes: 8 additions & 3 deletions examples/basic/cli/src/typeChecks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,9 @@ export async function typeChecks(client: Client<Ontology>) {

// lead is an employee
const lead = await employee.$link.lead.get();
expectType<TypeOf<typeof lead, OsdkObjectFrom<"Employee", Ontology>>>(true);
expectType<
TypeOf<typeof lead, OsdkObjectFrom<Ontology["objects"]["Employee"]>>
>(true);

// lead is an employee but we downselect to just their adUsername
const leadName = await employee.$link.lead.get({ select: ["adUsername"] });
Expand All @@ -97,7 +99,10 @@ export async function typeChecks(client: Client<Ontology>) {
TypeOf<
typeof peeps,
PageResult<
OsdkObjectFrom<"Employee", Ontology, "adUsername" | "employeeNumber">
OsdkObjectFrom<
Ontology["objects"]["Employee"],
"adUsername" | "employeeNumber"
>
>
>
>(true);
Expand All @@ -112,7 +117,7 @@ export async function typeChecks(client: Client<Ontology>) {
expectType<
TypeOf<
typeof peepById,
OsdkObjectFrom<"Employee", Ontology, "adUsername">
OsdkObjectFrom<Ontology["objects"]["Employee"], "adUsername">
>
>(
true,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { ActionDefinition } from '@osdk/api';

export const actionTakesAllParameterTypes = {
type: 'action',
apiName: 'actionTakesAllParameterTypes',
parameters: {
objectSet: {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { ActionDefinition } from '@osdk/api';

export const createTodo = {
type: 'action',
apiName: 'createTodo',
parameters: {},
description: 'Creates a new Todo',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import type { InterfaceDefinition } from '@osdk/api';

export const SimpleInterface = {
type: 'interface',
apiName: 'SimpleInterface',
description: 'Its a todo item.',
properties: {
Expand All @@ -26,4 +27,5 @@ export const SimpleInterface = {
nullable: true,
},
},
links: {},
} satisfies InterfaceDefinition<'SimpleInterface', ''>;
Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
import type { ObjectTypeDefinition } from '@osdk/api';

export const BoundariesUsState = {
export interface BoundariesUsStateDef extends ObjectTypeDefinition<'BoundariesUsState'> {
type: 'object';
apiName: 'BoundariesUsState';
description: 'Boundaries US State';
primaryKeyType: 'string';
links: {};
properties: {
usState: {
multiplicity: false;
type: 'string';
nullable: false;
};
geometry10M: {
multiplicity: false;
description: 'geoshape';
type: 'geoshape';
nullable: true;
};
};
}

export const BoundariesUsState: BoundariesUsStateDef = {
type: 'object',
apiName: 'BoundariesUsState',
description: 'Boundaries US State',
primaryKeyType: 'string',
Expand All @@ -18,4 +40,4 @@ export const BoundariesUsState = {
nullable: true,
},
},
} satisfies ObjectTypeDefinition<'BoundariesUsState', never>;
};
Original file line number Diff line number Diff line change
@@ -1,6 +1,62 @@
import type { ObjectTypeDefinition } from '@osdk/api';
import type { ObjectTypeDefinition, ObjectTypeLinkDefinition } from '@osdk/api';

export const Employee = {
export interface EmployeeDef extends ObjectTypeDefinition<'Employee'> {
type: 'object';
apiName: 'Employee';
description: 'An employee';
primaryKeyType: 'string';
links: { lead: ObjectTypeLinkDefinition<EmployeeDef, false>; peeps: ObjectTypeLinkDefinition<EmployeeDef, true> };
properties: {
adUsername: {
multiplicity: false;
type: 'string';
nullable: false;
};
locationName: {
multiplicity: false;
type: 'string';
nullable: true;
};
locationCity: {
multiplicity: false;
type: 'string';
nullable: true;
};
firstFullTimeStartDate: {
multiplicity: false;
type: 'datetime';
nullable: true;
};
businessTitle: {
multiplicity: false;
type: 'string';
nullable: true;
};
employeeNumber: {
multiplicity: false;
type: 'double';
nullable: true;
};
jobProfile: {
multiplicity: false;
type: 'string';
nullable: true;
};
locationType: {
multiplicity: false;
type: 'string';
nullable: true;
};
favPlace: {
multiplicity: false;
type: 'geopoint';
nullable: true;
};
};
}

export const Employee: EmployeeDef = {
type: 'object',
apiName: 'Employee',
description: 'An employee',
primaryKeyType: 'string',
Expand Down Expand Up @@ -61,4 +117,4 @@ export const Employee = {
nullable: true,
},
},
} satisfies ObjectTypeDefinition<'Employee', 'Employee'>;
};
Loading

0 comments on commit eb60762

Please sign in to comment.