github.com/alloyzeus/go-azfl@v0.0.0-20231220071816-9740126a2d07/azcore/entity_creation.go (about)

     1  package azcore
     2  
     3  type EntityCreationOutput[
     4  	IDNumT EntityIDNum,
     5  	IDT EntityID[IDNumT],
     6  	RevisionNumberT EntityRevisionNumber,
     7  	DeletionInfoT EntityDeletionInfo,
     8  	InstanceInfoT EntityInstanceInfo[
     9  		RevisionNumberT, DeletionInfoT],
    10  ] struct {
    11  	InstanceID   IDT
    12  	InitialState InstanceInfoT
    13  }
    14  
    15  // EntityCreationInfo holds information about the creation of an entity.
    16  type EntityCreationInfo[
    17  	SessionIDNumT SessionIDNum, SessionIDT SessionID[SessionIDNumT],
    18  	TerminalIDNumT TerminalIDNum, TerminalIDT TerminalID[TerminalIDNumT],
    19  	UserIDNumT UserIDNum, UserIDT UserID[UserIDNumT],
    20  	SessionSubjectT SessionSubject[
    21  		TerminalIDNumT, TerminalIDT,
    22  		UserIDNumT, UserIDT],
    23  	SessionT Session[
    24  		SessionIDNumT, SessionIDT,
    25  		TerminalIDNumT, TerminalIDT,
    26  		UserIDNumT, UserIDT,
    27  		SessionSubjectT, SessionT],
    28  ] interface {
    29  	OperationInfo[
    30  		SessionIDNumT, SessionIDT, TerminalIDNumT, TerminalIDT,
    31  		UserIDNumT, UserIDT,
    32  		SessionSubjectT,
    33  		SessionT]
    34  }
    35  
    36  // EntityCreationEvent is the abstraction for all entity creation events.
    37  type EntityCreationEvent[
    38  	SessionIDNumT SessionIDNum, SessionIDT SessionID[SessionIDNumT],
    39  	TerminalIDNumT TerminalIDNum, TerminalIDT TerminalID[TerminalIDNumT],
    40  	UserIDNumT UserIDNum, UserIDT UserID[UserIDNumT],
    41  	SessionSubjectT SessionSubject[
    42  		TerminalIDNumT, TerminalIDT,
    43  		UserIDNumT, UserIDT],
    44  	SessionT Session[
    45  		SessionIDNumT, SessionIDT,
    46  		TerminalIDNumT, TerminalIDT,
    47  		UserIDNumT, UserIDT,
    48  		SessionSubjectT, SessionT],
    49  	EntityCreationInfoT EntityCreationInfo[
    50  		SessionIDNumT, SessionIDT, TerminalIDNumT, TerminalIDT,
    51  		UserIDNumT, UserIDT, SessionSubjectT, SessionT],
    52  ] interface {
    53  	AZEntityCreationEvent()
    54  
    55  	CreationInfo() EntityCreationInfoT
    56  }
    57  
    58  // EntityCreationInputContext is the abstraction for all entity creation
    59  // call input contexts.
    60  type EntityCreationInputContext[
    61  	SessionIDNumT SessionIDNum, SessionIDT SessionID[SessionIDNumT],
    62  	TerminalIDNumT TerminalIDNum, TerminalIDT TerminalID[TerminalIDNumT],
    63  	UserIDNumT UserIDNum, UserIDT UserID[UserIDNumT],
    64  	SessionSubjectT SessionSubject[
    65  		TerminalIDNumT, TerminalIDT,
    66  		UserIDNumT, UserIDT],
    67  	SessionT Session[
    68  		SessionIDNumT, SessionIDT,
    69  		TerminalIDNumT, TerminalIDT,
    70  		UserIDNumT, UserIDT,
    71  		SessionSubjectT, SessionT],
    72  	ServiceMethodIdempotencyKeyT ServiceMethodIdempotencyKey,
    73  ] interface {
    74  	ServiceMethodCallInputContext[
    75  		SessionIDNumT, SessionIDT,
    76  		TerminalIDNumT, TerminalIDT,
    77  		UserIDNumT, UserIDT,
    78  		SessionSubjectT,
    79  		SessionT, ServiceMethodIdempotencyKeyT]
    80  
    81  	AZEntityCreationInputContext()
    82  }
    83  
    84  // EntityCreationOutputContext is the abstraction for all entity creation
    85  // call output contexts.
    86  type EntityCreationOutputContext interface {
    87  	ServiceMethodCallOutputContext
    88  
    89  	AZEntityCreationOutputContext()
    90  }