open-insight/SYSPROG/STPROC/SRP_GIT_SERIALIZER.txt
2024-03-25 15:17:34 -07:00

164 lines
7.1 KiB
Plaintext

Compile function SRP_Git_Serializer(@Service, @Params)
/************************************************************************************************
This program is proprietary and is not to be used by or disclosed to others, nor is it to
be copied without written permission from SRP Computer Solutions, Inc.
Name : SRP_Git_Serializer
Description : Service module for the converting files to formats suitable for Git.
Parameters:
Service [IN] - The service to execute
Params [IN] - Service specific parameters
History (Date, Initials, Notes)
02/20/19 KRF Original programmer
07/30/19 KRF Renamed to SRP_Git_Serializer and updated to use new DLL stubs
************************************************************************************************/
#pragma precomp SRP_PreCompiler
#pragma output SYSLISTS SRP_GIT_SERIALIZER
$insert LOGICAL
Declare function ISRPGitSerializer_ReadFromGit, ISRPGitSerializer_ReadFileFromGit, ISRPGitSerializer_PathToEntityId, ISRPGitSerializer_Deserialize
Declare function ISRPGitSerializer_EntityIdToPath, ISRPGitSerializer_GetSupportedTypes, ISRPGitSerializer_EntityIdToKeys, ISRPGitSerializer_EntityIdToRelativePath
Declare function Str_Unicode, Unicode_Str, ISRPGitSerializer_GetMetaData
Declare subroutine ISRPGitSerializer_WriteToGit, ISRPGitSerializer_WriteToGitSync, ISRPGitSerializer_DeleteFromGit, ISRPGitSerializer_CopyOutput, ISRPGitSerializer_SetMetaData
GoToService
Return Response or ""
///////////////////////////////////////////////////////////////////////////////////////////////////
// SERVICES
///////////////////////////////////////////////////////////////////////////////////////////////////
//-------------------------------------------------------------------------------------------------
// Converts the given entity into a file suitable for GIT comparisons.
//-------------------------------------------------------------------------------------------------
Service Write(EntityId, Record, RepoPath, Metadata)
If Len(Metadata) then
ISRPGitSerializer_SetMetaData(Metadata)
end
RecordW = Str_Unicode(Record)
ISRPGitSerializer_WriteToGit(EntityId, RecordW, Len(Record), RepoPath)
end service
//-------------------------------------------------------------------------------------------------
// Converts the given entity into a file suitable for GIT comparisons. Synchronous.
//-------------------------------------------------------------------------------------------------
Service WriteSync(EntityId, Record, RepoPath, Metadata)
If Len(Metadata) then
ISRPGitSerializer_SetMetaData(Metadata)
end
RecordW = Str_Unicode(Record)
ISRPGitSerializer_WriteToGitSync(EntityId, RecordW, Len(Record), RepoPath)
end service
//-------------------------------------------------------------------------------------------------
// Deletes the file associated with this entity id
//-------------------------------------------------------------------------------------------------
Service Delete(EntityId, RepoPath)
ISRPGitSerializer_DeleteFromGit(EntityId, RepoPath)
end service
//-------------------------------------------------------------------------------------------------
// Converts a file suitable for GIT comparisons back into an OI entity.
//-------------------------------------------------------------------------------------------------
Service Read(EntityId, RepoPath, Ref Metadata)
Len = ISRPGitSerializer_ReadFromGit(EntityId, RepoPath)
GoSub GetOutput
Metadata = ISRPGitSerializer_GetMetaData()
end service
//-------------------------------------------------------------------------------------------------
// Reads the given file, returning the record and it's entity id
//-------------------------------------------------------------------------------------------------
Service ReadFile(RepoPath, FilePath, Ref EntityId, Ref Metadata)
EntityId = Str(\00\, 260)
Len = ISRPGitSerializer_ReadFileFromGit(EntityId, RepoPath, FilePath)
EntityId = EntityId[1, \00\]
GoSub GetOutput
Metadata = ISRPGitSerializer_GetMetaData()
end service
//-------------------------------------------------------------------------------------------------
// Deserializes text
//-------------------------------------------------------------------------------------------------
Service Deserialize(EntityId, Text, Ref Metadata)
Len = ISRPGitSerializer_Deserialize(EntityId, Text)
GoSub GetOutput
Metadata = ISRPGitSerializer_GetMetaData()
end service
//-------------------------------------------------------------------------------------------------
// Given an EntityId, this service constructs the target full file and path name
//-------------------------------------------------------------------------------------------------
Service EntityIdToPath(RepoPath, EntityId)
Response = ISRPGitSerializer_EntityIdToPath(RepoPath, EntityId)
end service
//-------------------------------------------------------------------------------------------------
// Given an EntityId, this service constructs the target path name relative to the repo directory
//-------------------------------------------------------------------------------------------------
Service EntityIdToRelativePath(EntityId)
Response = ISRPGitSerializer_EntityIdToRelativePath(EntityId)
end service
//-------------------------------------------------------------------------------------------------
// Given a full file and path name, this service constructs the target EntityId
//-------------------------------------------------------------------------------------------------
Service PathToEntityId(RepoPath, FilePath)
Response = ISRPGitSerializer_PathToEntityId(RepoPath, FilePath)
end service
//-------------------------------------------------------------------------------------------------
// Given an EntityId, this service constructs all the tables and keys housing that entities data
//-------------------------------------------------------------------------------------------------
Service EntityIdToKeys(EntityId)
Response = ISRPGitSerializer_EntityIdToKeys(EntityId)
end service
//-------------------------------------------------------------------------------------------------
// An @FM delimited list of supported entity types
//-------------------------------------------------------------------------------------------------
Service GetSupportedEntityTypes()
Response = ISRPGitSerializer_GetSupportedTypes()
end service
///////////////////////////////////////////////////////////////////////////////////////////////////
// GOSUBS
///////////////////////////////////////////////////////////////////////////////////////////////////
GetOutput:
If Len GT 0 then
ResponseW = Str(\0000\, Len)
ISRPGitSerializer_CopyOutput(ResponseW, Len)
Response = Unicode_Str(ResponseW)
end
return